我試圖使用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? –