【问题标题】:AWS php putObject to S3 from form $_FILE[] multipart uploadAWS php putObject 从表单 $_FILE[] 分段上传到 S3
【发布时间】:2014-04-30 06:10:23
【问题描述】:

我正在将最多 4 张图片从多部分表单上传到 apache 服务器。我目前正在迁移到 Amazon S3 进行存储,我想知道最佳选择。

1) 我的 php 脚本目前首先将图像作为临时文件上传到 Ec2 服务器,例如名为 phpwG3oTb。然后我通常会 move_uploaded_file 重命名它并将其移动到正确的目录。使用适用于 S3 的 AWS PHP SDK 我可以看到我可以避免这种移动并直接使用 putObject 上传它:

$result = $this -> s3Client -> putObject(array('Bucket' => $this -> bucket, 'Key' => 'file_1', 'SourceFile' => 'phpwG3oTb', 'ACL' => 'public-read);

但是,S3 存储桶上的文件现在称为 phpwG3oTb,键为 file_1。为这个文件提供的 url 是https://url.amazonaws.com/site-dev/folder_1/phpwG3oTb

当我单击此图像时,图像被下载并且没有显示在浏览器中,我猜它没有 mime_type。如果我上传与 image.jpg 相同的图像,它可以正常工作。

为了避免这种情况,我需要将本地上传的文件重命名为 image.jpg,然后使用 putObject。我想避免这一步。

2) 下一个可能不是获取文件的 $_FILE[] 并将其上传到 Ec2 服务器,然后调用 putObject。也许我可以直接从数组内存中获取文件并以某种方式将其写入 putObject。我不确定那怎么可能。我正在考虑类似的伪代码:

$result = $this -> s3Client -> putObject(array('Bucket' => $this -> bucket, 'Key' => 'file_1', 'SourceFile' => $_FILE["<ref_file>"], 'ACL' => 'public-read);

【问题讨论】:

    标签: php file-upload sdk amazon-ec2 amazon-s3


    【解决方案1】:

    你可以做你在第一个做的事情。如果没有扩展,它将无法正确检测内容类型。

    如果您知道文件的内容类型,您可以使用 'ContentType' =&gt; 'image/jpeg' 作为 putObject 参数的一部分手动设置它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-13
      • 2021-06-13
      • 2013-03-29
      • 1970-01-01
      • 2012-11-10
      相关资源
      最近更新 更多