【发布时间】: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