LoginSignup
0
0

More than 1 year has passed since last update.

【Laravel】ローカルにすでに存在するファイルを S3 に保存する

Posted at

これをしたくて検索しても、たいていアップロードしてS3に保存する的な利用方法での実装が多く、

  • すでに存在するファイルを保存したい
  • 名前はそのまま
  • 公開権限をつけたい

という前提だとなかなか情報にたどり着かずでした。

そのため、いろいろ試行錯誤したところ下記のようにシンプルなコードで実装することができました(Laravel5.5です)。

Laravel
use Illuminate\Support\Facades\Storage;
use Illuminate\Http\File;

$disk = Storage::disk('s3');
$disk->putFileAs($savePath, New File($filePath), $fileName, ['ACL' => 'public-read']);

$savePath : S3上のパス ※最初と最後の / は省く
$filePath : ローカル上のファイルのフルパス(ファイル名含む)
$fileName : S3に保存するときのファイル名

ちなみに、Illuminate\Http\File を use せず、…, New File($filePath),……, New \File($filePath),… とすると、Illuminate\Support\Facades\File が読み込まれてしまいエラーになる場合があるのでご注意を。

追記

上記はLaravel8では動作しませんでした。本バージョンでは下記になります。

Laravel
$disk = Storage::disk('s3');
$disk->putFileAs($savePath, $filePath, $fileName, ['ACL' => 'public-read']);
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0