WinRoadのLaravel4初心者講座

次世代PHPフレームワークのLaravel4を初心者向けに解説して参ります。

Winroad徒然草の管理人がお届けします
ファイル

ファイル

このエントリーをはてなブックマークに追加

Laravelでファイルをアップロードするには、SymfonyのUploadFileクラスを使用します。

アップロードしたファイルの取得

アップロードしたファイルを取得するには、Input::file(‘ファイル名’)メソッドが用意されています。そして、ファイルがアップロードされたか調べるには、Input::hasFile(‘ファイル名’)メソッドが用意されています。

1.  それでは、実際に試してみましょう。home/index.blade.phpファイルを作成し、下記のように記述します。

@extends('layout')
 @section('content')
 <h2>File送信ページです</h2>
 {{Form::open(['enctype'=>'multipart/form-data'])}}
 {{Form::file('photo')}}
 {{Form::submit()}}
 {{Form::close()}}
 @stop
  • 4行目:ファイルを送信するには、’enctype’を’multipart/form-data’に指定します。
  • 4行目:上記は、’files’=>trueでも代用できますので、自分自身で簡単な方を選択して下さい。
    (例)
    {{Form::open([‘files’=>true])}}
  • 5行目:キー名photoのファイルを送信します。

2.  app/routesにHomeControllerを登録します。

Route::controller(‘home’,’HomeController’);

3.  HomeControllerを下記のように記述します。

<?php
 class HomeController extends BaseController {
public function getIndex(){
return View::make('home/index')
 }
public function postIndex(){
 return var_dump(Input::file('photo'));
}

4. 実際に画像を送信してみます。

laravel033

5. 下記のように表示されます。

laravel034

6. 次に、postIndexを下記のように修正してみます。

public function postIndex(){
 if(Input::file('photo')){
 return 'ファイルがアップロードされました!!';
 }
 return 'ファイルはアップロードされませんでした';
 }

7. 先ほどのフォームから画像ファイルを送信すると、『ファイルがアップロードされました!!』とブラウザに表示され、画像ファイルを選択せずに送信ボタンをクリックすると、『ファイルはアップロードされませんでした』と表示されるはずです。

送信したファイルの保存

8. アップロードしたファイルを保存するには、move()メソッドを使用します。

9. move()メソッドは、第1引数にファイルの移動先(保存先)フォルダパス、第2引数にファイル名を指定します。

10. postIndexを再度下記のように修正します。

public function postIndex(){
 $name=Input::file('photo')->getClientOriginalName();
 Input::file('photo')->move('images/demo',$name);
 if(Input::file('photo')){
 return 'ファイルがアップロードされました!!';
 }
 return 'ファイルはアップロードされませんでした';
 }

10.  publicフォルダにimages/demoフォルダが作成され、その中に送信した画像ファイルが保存されているはずです。

11.  それでは実際にアップロードした画像を表示してみましょう。

12. views/home/view.blade.phpファイルを作成し、下記のように記述します。

@extends('layout')
 @section('content')
 <h2>Fileの表示ページです</h2>
 {{HTML::image('images/demo/'.$name,'蔵之介の画像')}}
 @stop

13. そしてpostIndexを下記のように修正します。

public function postIndex(){
 $name=Input::file('photo')->getClientOriginalName();
 Input::file('photo')->move('images/demo',$name);
 if(Input::file('photo')){
 return View::make('home/view',['name'=>$name]);
 }
 return 'ファイルはアップロードされませんでした';
 }

14. 実際に画像をアップロードしたら、下記のように画像が表示されます。

laravel035

その他のメソッド

15. その他のメソッドを簡単にご紹介します。これは公式ドキュメントの丸写しですので、特に説明は省略します。

getRealPath()

アップロードしたファイルのパスを取得します。

getClientOriginalName()

アップロードしたファイルの元の名前を取得します。

getClientOriginalExtension()

アップロードしたファイルの拡張子を取得します。

getSize()

アップロードしたファイルのサイズを取得します。

getMimeType()

アップロードしたファイルのMIMEタイプを取得します。

 

« »

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です