我一直在尝试弄清楚如何使用新的 PHP 2.0 SDK 将图像推送到 S3 存储桶。我找到的所有内容都是有关如何从您的网络服务器而不是从本地计算机上传图像的教程。 这是我正在使用的代码
$result = $s3->putObject(array(
'Bucket' => $bucketname,
'Key' => $filename,
'SourceFile' => $path,
'ACL' => 'public-read',
'ContentType' => 'image/jpeg',
'StorageClass' => 'STANDARD'
));
$filename
只是我想要出现在存储桶中的文件名,$path
是文件在我计算机上的本地路径。这会将一个文件放入存储桶中,但是当我尝试打开图像时,它只是显示为一个没有图像缩略图的空屏幕。我检查了一下,似乎只上传了 30 个字节。有人可以指出我正确的方向吗?
最佳答案
因此,为了上传,您还需要指定 Body。所以如果你从你的电脑上传,这就是代码
$s3 = $aws->get('s3');
$filename = $_FILES['file']['name'];
$tmpFile = $_FILES['file']['tmp_name'];
$imageType = $_FILES['file']['type'];
// Upload a publicly accessible file.
// The file size, file type, and MD5 hash are automatically calculated by the SDK
try {
$s3->putObject(array(
'Bucket' => $bucketname,
'Key' => $filename,
'Body' => fopen($tmpFile, 'r'),
'ACL' => 'public-read',
'ContentType' => $imageType,
'StorageClass' => 'STANDARD'
));
} catch (S3Exception $e) {
echo "There was an error uploading the file.\n";
}
$tmpFile 是您计算机上文件的路径。我正在使用上传机制,因此我使用 temp。但你可以只放置静态路径。
关于php - AWS S3 PHP 2.0 - 如何将图像从计算机上传到存储桶?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19041569/