#はじめに
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を使うことにしました!
エンジニアとしてまだ未熟なので間違っているところがあればコメントいただけると助かります!