読者です 読者をやめる 読者になる 読者になる

phpからs3にアップロードしたファイルが14byteになっていてハマったのでメモ

はじめに

fuelphpからs3(aws)を利用する方法メモ - とりあえずphpとか
こちらでfuelphpからs3を利用する方法を書きましたが、画像をアップロードしたファイルが14byteになってしまってブラウザから見ようとしてもエラーに、、、
というところでハマったのでメモします

原因

awsの権限周りの設定などを疑ったのですが、もっと根本的に僕が実装したスクリプトがおかしかっただけでした。

修正前

            $result = $s3->putObject(array(
                "Bucket" => "バケット名",
                "Key" => "保存先のパス",
                "Body" => "保存元のパス",
            ));

修正後

            $result = $s3->putObject(array(
                "Bucket" => "バケット名",
                "Key" => "保存先のパス",
                "Body" => EntityBody::factory(fopen("保存元のパス", 'r+')), // ⭐️ココ
                "ContentType" => "image/jpeg", // ⭐️ついでにココも
            ));

Bodyにアップロードしたいファイルのパスをかいていたのですが、ここにはデータを書くべきだったのですね、、、ついでにawsのマニュアルをみていたらEntityBody::factoryメソッドがかかれていたのでこのメソッドもいれました。

あと、ContentTypeをつけないとダメですね、、、

とりあえず、ちょっとハマったので記録しておきます
以上です