0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Laravel画像アップロード(Intervention Image)

Posted at

Laravel 画像アップロード

inputタグを使うけども、ファイルかどうかを確認するバリデーションを設定

画像サイズは統一にした方がレイアウトが綺麗になる(例えば、1920px✖️1080px)

  • ユーザー側でリサイズするパターン
    • 1920px✖️1080pでないとアップロードできないというバリデーションをつける
  • サーバー側でリサイズするパターン
    • PHPに搭載される「Intervention Image」を使う

重複しない名前で保存する

//ビュー側
<form method=post action=“” enctype=multipart/form-data>
<input type=file accept=image/png,image/jpeg,image/jpg>

ここからは大体お約束の事柄
formのところはmultipart属性をつける
accept属性でアップロードできるファイルを指定できる

画像の保存 putFileを使うとフォルダも作ってくれる

//画像アップロード コントローラ側
//リサイズしないパターン (putFileでファイル名生成) 
use Illuminate\Support\Facades\Storage;

public function update(Request $request, $id) {
$imageFile = $request->image; //PC側に一時保存 
if(!is_null($imageFile) && $imageFile->isValid() ){//画像があって、かつアップロードできたら(isValid)
//第一引数:保存したいフォルダ 第二引数:保存したいファイルを指定
Storage::putFile('public/shops', $imageFile); }
}

Intervention Imageを使った画像保存

PHP 画像ライブラリ http://image.intervention.io/

注意
(もし無効になっていたら有効化する(enableにする) php.info()で確認)

Ctrl + f で検索する。以下のようになっていたらOK
image.png

image.png

GD 画像ライブラリをコンポーザーで入れる
composer require intervention/image

Intervention Image 設定

config/app.php

$providers = [ Intervention\Image\ImageServiceProvider::class];
// Imageだとバッティングするので変更 aliasに追加
$alias = ['InterventionImage' => Intervention\Image\Facades\Image::class ];

Intervention Image リサイズ

use InterventionImage;

$resizedImage = InterventionImage::make($imageFile)->resize(1920, 1080)->encode();
//Storage::putFile はFileオブジェクト想定 InterventionImageでリサイズすると画像になり型が変わる
//今回は Storage:put で保存 (フォルダは作成、ファイル名は指定)
//InterventionImage::make でInterventionImageで画像を使えるようにする
$fileName = uniqid(rand().'_');//ファイル名を一意にする
$extension = $imageFile->extension(); //拡張子を取得する
$fileNameToStore = $fileName. '.' . $extension;//文字列連結
Storage::put('public/shops/' . $fileNameToStore, $resizedImage );
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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?