Pra*_*een 0 php url amazon-s3 amazon-web-services
我正在将文件从 php 上传到 aws s3。我已成功上传文件。
它返回的网址是=> https://BUCKETNAME.s3.ap-south-1.amazonaws.com/images1740/1550830121572.jpg
实际的网址是=> https://s3.ap-south-1.amazonaws.com/BUCKETNAME/images1740/1550830121572.jpg (存储桶名称从网址开头而不是末尾出现)
因此,加载图像时出现错误=>“找不到指定的密钥”
$source = $source;
$bucket = 'xxxxxxxxxxxxxxxxx';
$keyname = 'images'.$usr_id."/".$name;
// for push
$s3 = S3Client::factory(
array(
'credentials' => array(
'key' => "xxxxxxxxxxxxxx",
'secret' => "xxxxxxxxxxxxxxx"
),
'version' => 'latest',
'region' => 'ap-south-1'
)
);
try {
// Upload data.
$result = $s3->putObject(array(
'Bucket' => $bucket,
'Key' => $keyname,
'SourceFile' => $source,
'ServerSideEncryption' => 'AES256',
));
// Print the URL to the object.
print_r($result);
return $result['ObjectURL'] . PHP_EOL;
// print_r($result);
} catch (S3Exception $e) {
echo $e->getMessage() . PHP_EOL;
}
Run Code Online (Sandbox Code Playgroud)
初始化 S3 客户端时设置use_path_style_endpoint为 true,使其在构建对象 URL 时默认使用 S3 路径样式端点。1
如果存储桶名称是有效的域名,则实现细节将对象 URL 设为路径样式,否则将回退到 S3 路径样式。
你想一直保留后来的行为。
$s3 = S3Client::factory(
array(
'credentials' => array(
'key' => "xxxxxxxxxxxxxx",
'secret' => "xxxxxxxxxxxxxxx"
),
'use_path_style_endpoint' => true,
'version' => 'latest',
'region' => 'ap-south-1'
)
);
Run Code Online (Sandbox Code Playgroud)
如果您想一次性禁用 PutObject 操作,也可以执行以下操作。
$result = $s3->putObject(array(
'Bucket' => $bucket,
'Key' => $keyname,
'SourceFile' => $source,
'ServerSideEncryption' => 'AES256',
'@use_path_style_endpoint' => true
));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4882 次 |
| 最近记录: |