60
64

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 5 years have passed since last update.

Laravel上画像アップロード

Last updated at Posted at 2017-02-07

Laravelでは画像アップロードを簡単に行うことができます。

作業工程は以下の通りです。:
①ルーティング
→フォームビュー
→リクエスト
②コントローラー
③ビュー

まず、ルーティングを記載します。
--->routes.php


Route::get('/', 'UploadController@index');
Route::post('/store', [
    'as' => 'store', 'uses' => 'UploadController@store'
]);

後はビューを制作しましょう。
--->uploads.blade.php


{!! Form::open(['url' => 'route.store', ['files' => true]]) !!}
@if (isset($message))
        <div class="alert">{{$message}}</div>
@endif
		<?php echo Form::token(); ?>
		<?php echo Form::label('upload', 'Upload a file'); ?>
		<?php echo Form::file('file'); ?>
		<?php echo Form::submit('Submit'); ?>
{!! Form::close() !!}

*['files'=>true]*を忘れずに記載する。
次はコントローラー( バリデーションチェックとビジネスロジックのため )
--->UploadController.php


namespace App\Http\Controllers;
 
use App\Http\Controllers\Controller;
use Request;
 
 
class UploadController extends Controller {

    public function index(Request `$`request)
    {
        return view('uploads');
    }
    public function store(Request $request)
    {

        // バリデーションルール
        $rules = [
            'file' => 'image|max:3000',
        ];
        //バリデーションされているファイルは (jpeg, png, bmp, gif, or svg)にしないといけません。
        //3000Kb以下のファイルにする必要です。

        // バリデーターにルールとインプットを入れる
        $validation = Validator::make($request, $rules);
        
        // バリデーションチェックを行う
        if ($validation->fails()) {
            return redirect('/')->with('message', 'ファイルを確認してください!');
        }

//バリデーションルール、メッセージをRequestファイルに書いて、呼ばれることもあります。

        $imageName = str_shuffle(time().$request->file('file')->getClientOriginalName()). '.' . $request->file('file')->getClientOriginalExtension();//ファイル名をユニックするためstr_shuffleを使う
        $request->file('file')->move(
            base_path() . '/public/images/catalog/confirm', $imageName
        );
        return redirect('/')->with('message', 'ファイルをアップロードしました!');
    }
}

大事な機能:
→アップロードするファイル名を取得するため、*getClientOriginalName()*を使う
→アップロードするファイルの一時的な名を取得するため、*getFilename()*を使う
→アップロードされたファイルのパスを取得の場合、*getRealPath()*を使う
→アップロードされたファイルのサイズを取得の場合、*getClientSize()*を使う
→アップロードされたファイルのmimeタイプを取得の場合、*getClientMimeType()*を使う
→アップロードされたファイルの拡張子を取得の場合、*getClientOriginalExtension()を使う
move()*メソッドはファイルを記載したパスまで移動するために使います。ファイルパスはパラメーター1とファイル名はパラメーター2で記載する必要があります。

60
64
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
60
64

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?