php - AWS S3 PHP 2.0 - 如何将图像从计算机上传到存储桶?

标签 php amazon-web-services upload amazon-s3

我一直在尝试弄清楚如何使用新的 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/

相关文章:

php - target= 超出 iframe 但仍保留在同一个浏览器窗口中?

Maven Assembly 插件,上传正确的 zip 文件

Java - 将 OutputStream 上传为 HTTP 文件上传

php - 给定一组常数因子,在字符串中搜索字符串的最快方法

php - 非常简单的 SQL 函数返回 bool 值 1 (true) 而不是资源

php - 另一个类中的 MySQLi 连接

amazon-web-services - 如何 aws 一年的带宽报告?

amazon-web-services - AWS Codepipeline 中的条件执行阶段

database - 如何在aws中创建mysql函数?

javascript - 无法在数据浏览器中查看上传的 PDF 文件