【发布时间】:2018-05-07 03:31:15
【问题描述】:
我正在使用 AWS SDK for php 将文件上传到我的 S3 存储桶。我使用 IAM 管理器创建了一个单独的用户,并为其授予了对 S3 的完全访问权限。这是我实现的代码(PHP7,apache2)
$bucket = 'bucketname';
$file_path = $_FILES['fileToUpload']['tmp_name'];
$key = basename($_FILES["fileToUpload"]["name"]);
try{
//Create a S3Client
$s3Client = new S3Client([
'version' => 'latest',
'region' => 'ap-south-1',
'credentials' => [
'key' => 'my-key',
'secret' => 'secret-key',
],
]);
$result = $s3Client->putObject([
'Bucket' => $bucket,
'Key' => $key,
'SourceFile' => $file_path,
'ACL' => 'public-read',
]);
echo $result['ObjectURL'];
} catch (S3Exception $e) {
echo $e->getMessage() . "\n";
}
在上传文件时,我得到了这样的网址
https://bucketname.s3.ap-south-1.amazonaws.com/image.png (不是真实网址)
这是我得到的 xml 响应
<Error>
<Code>NoSuchKey</Code>
<Message>The specified key does not exist.</Message>
<Key>/image.png</Key>
<RequestId>E131E328AF9CAF41</RequestId>
<HostId>gOreLsZBX9V1Whq++BoJVZCKPS415r51IUXXs0zZeIoa16KaXBCzOYKFrYYRktJJBB8HnBSyDTM=</HostId>
</Error>
有什么想法吗?
【问题讨论】:
-
确保您的 S3 客户端密钥正确
-
你在 S3 上看到你的文件了吗?
-
S3 客户端密钥正确。 @Thamaraiselvam 不,它显示存储桶为空
-
@JCDenton 尝试使用 move_upload_file() 函数而不是 putobject()
标签: php amazon-web-services amazon-s3