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を使ってImageをクライアントにレンダリングすると、クライアントは正しく表示されます。問題は、そのファイルストリームがS3に転送されるときです。 –
@PabloAdoue ::あなたはContent-Lengthを供給しようとしましたか? –