3
0

More than 3 years have passed since last update.

Laravelでリサイズした画像をdropboxにアップロードする

Posted at

はじめに

iPhoneで撮った写真をDropboxにアップロードする機能を導入する際に、無料で使える容量が2Gしかなかったのでサイズを小さくしてアップロードしようとしたけど詰まったので備忘録としてやり方を載せておきます。

環境・事前準備

  • Laravel 6.0
  • Dropboxアカウント

Dropbox接続手順

composerでDropboxを操作するためのライブラリをインストール。

composer require benjamincrozat/laravel-dropbox-driver
config/app.php
'providers' => [
    BC\Laravel\DropboxDriver\ServiceProvider::class,
],
filesystems.php
'disk' => [
     'dropbox' => [
         'driver' => 'dropbox',
         'token' => env('DROPBOX_TOKEN'),
     ],

dropboxのaccessTokenを環境変数にセット。

.env
DROPBOX_TOKEN=accessToken

Intervention Image導入手順

画像をリサイズするためにパッケージをcomposerでインストール

php aritsan require intervention/image
config/app.php
'providers' => [
    Intervention\Image\ImageServiceProvider::class,
],

'alianses' => [
    'Image' => Intervention\Image\Facades\Image::class,
],

画像アップロード処理

Controllers/HelloController.php
//画像のリサイズとアップロードするために下記2つを追加
use Illuminate\Support\Facades\Storage;
use Intervention\Image\Facades\Image;

public function store(Request $request)
{
     //アップロードされたリクエストの中に画像があるかチェック
     if($request->hasFile('image')){
         $file = $request->file('image');
         $imgName = $file->getClientOriginalName();
         //画像リサイズ処理(横幅を1200pxに指定)
         $image = Image::make($file)
               ->resize(1200,null,function($constraint{
                    $constraint->aspectRatio();//aspectRatio、縦幅アスペクト比維持で自動調整
                });   
         //putメソッドの第一引数にパスを指定(下記のコードではdropboxデベロッパーで設定したフォルダ直下に保存される)
         Storage::disk('dropbox')->put($imgName,(string)$image->encode('jpg',100),'public');
        }

        return view('Hello');
    }

おしまい

AWS s3がアカウント認証でこけたので今回Dropboxを使うことにしました!
エンジニアとしてまだ未熟なので間違っているところがあればコメントいただけると助かります!

3
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
3
0