Laravel檔案上傳


上傳檔案在Laravel中是很容易的。我們需要做的是建立一個檢視檔案,使用者可以選擇要上傳的檔案,並使用控制器來處理上傳的檔案。
在檢視檔案中需要通過新增以下程式碼行來生成一個檔案輸入框。
Form::file('file_name');
在Form::open(), 我們需要新增‘files’=>’true’ ,如下圖所示。這有利於使用 multiple parts 上傳檔案。
Form::open(array('url' => '/uploadfile','files'=>'true'));

範例

第1步 - 建立一個名為 resources/views/uploadfile.php 的檢視檔案,並複製下面的程式碼到此檔案。

resources/views/uploadfile.php

<html>
   <body>
      
      <?php
         echo Form::open(array('url' => '/uploadfile','files'=>'true'));
         echo '選擇一個要上傳的檔案:<br/>';
         echo Form::file('image');
         echo Form::submit('提交上傳');
         echo Form::close();
      ?>
   
   </body>
</html>
第2步 - 通過執行以下命令建立一個名為UploadFileController 的控制器。
D:\laravel>php artisan make:controller UploadFileController
第3步 - 成功執行後,您會收到以下輸出 -

第4步 - 複製下面的程式碼到檔案 - app/Http/Controllers/UploadFileController.php。

app/Http/Controllers/UploadFileController.php

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class UploadFileController extends Controller {
   public function index(){
      return view('uploadfile');
   }
   public function showUploadFile(Request $request){
      $file = $request->file('image');
   
      //Display File Name
      echo 'File Name: '.$file->getClientOriginalName();
      echo '<br>';
   
      //Display File Extension
      echo 'File Extension: '.$file->getClientOriginalExtension();
      echo '<br>';
   
      //Display File Real Path
      echo 'File Real Path: '.$file->getRealPath();
      echo '<br>';
   
      //Display File Size
      echo 'File Size: '.$file->getSize();
      echo '<br>';
   
      //Display File Mime Type
      echo 'File Mime Type: '.$file->getMimeType();
   
      //Move Uploaded File
      $destinationPath = 'uploads';
      $file->move($destinationPath,$file->getClientOriginalName());
   }
}
第5步 - 新增以下行到檔案 - app/Http/routes.php

app/Http/routes.php

Route::get('/uploadfile','UploadFileController@index');
Route::post('/uploadfile','UploadFileController@showUploadFile');
第6步 - 請存取以下網址進行測試上傳檔案功能。

http://localhost:8000/uploadfile

第7步- 這會收到一個提示,如下面圖片所示。
Laravel文件上傳
點選「提交上傳」按鈕後,上傳檔案處理結果如下所示: