我试图使用PHP获取远程文件(图像),然后将该图像放到S3存储桶中。将PHP file_get_contents流保存到AWS S3
它主要工作,除了上传到S3的文件再次下载时为空。
这里是我到目前为止的代码:
$src = "http://images.neventum.com/2016/83/thumb100x100/56f3fb1b9dbd6-acluvaq_63324840.png";
$name = md5(uniqid());
$ext = pathinfo($src, PATHINFO_EXTENSION);
$file_content = file_get_contents($src);
$filename = "{$name}.{$ext}";
try {
$file = $this->s3->putObject([
'Bucket' => getEnv('s3bucket'),
'Key' => $filename,
'Body' => $file_content,
'ACL' => 'private'
]);
} catch (S3Exception $e) {
//Catch
}
希望能对你有所帮助。提前谢谢你。
更新1:
的问题是不是与ACL(我一直在使用“公共”测试),是S3的存储对象不正确uploded(我认为是值得做的编码,但一直没能弄清楚)
你检查了$ file_content不是NULL或FALSE吗?对于file_get_contents()来处理http://你需要在php ini中设置:http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen – at0mzk
是的,我有。事实上,当我使用$ content_type将图像渲染到客户端时,它会正确显示。问题在于文件流何时转移到S3。 –
@PabloAdoue ::你有没有试过提供Content-Length? –