質問編集履歴

1 "aws/aws-sdk-php": "^3.128",

m6388544291

m6388544291 score 2

2020/07/02 09:10  投稿

pre-sigined URLで s3 に直接アップロードする方法
### 前提・実現したいこと
laravelでのpre-sigined URLでs3に直接アップロードすることを行いたいです。
https://qiita.com/ytanaka3/items/ad150811df54aa7434fb
### 発生している問題・エラーメッセージ
```
laravelで作成したURLを実行した際にS3にファイルは保存されて,ファイルサイズも正しくひょうじされているもののそのファイルを開くと下記のメッセージが表示されます。画像、動画共にダメです。
ファイルが壊れているか、“プレビュー”が認識しないフォーマットを使用している可能性があります。
```
### 該当のソースコード
```php
$s3Client = new S3Client([
           'version' => 'latest',
           'region' => Env('AWS_DEFAULT_REGION'),
       ]);
       $path = 'test/image/asd.jpg';
       $cmd = $s3Client->getCommand('PutObject', [
           'Bucket' => env('AWS_BUCKET'),
           'Key' => $path,
       ]);
       $request = $s3Client->createPresignedRequest($cmd, '+20 minutes');
       $presignedUrl = (string)$request->getUri();
       return $presignedUrl;
```
```curl
curl -X PUT \
 'https://your-bucket-name.s3.ap-northeast-1.amazonaws.com/tmp/asdf.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIxxxxxxxxxxxxxxx%2F20190117%2Fap-northeast-1%2Fs3%2Faws4_request&X-Amz-Date=20190117T103740Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&X-Amz-Signature=3e6d8de19dca1079f43468a9b03d2a06b80a98f9dee7399431xxxxxxxxx' \
 -F file=/path/to/asdf.jpg
```
### 試したこと
```
CORSの問題かと思い変更しましたがだめでした。
```
### ご存知の方、ご教示お願いいたします。
ここにより詳細な情報を記載してください。
```
"aws/aws-sdk-php": "^3.128",
```
  • Amazon S3

    362 questions

    Amazon S3 (Simple Storage Service)とはアマゾン・ウェブ・サービスが提供するオンラインストレージサービスです。

  • Laravel 5

    3219 questions

    Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る