如何在Laravel中直接將檔案上傳到public資料夾?
這是我們public/資料夾中的內容。
讓我們將上傳的檔案移動到public資料夾中的images/資料夾中。檔案上傳顯示如下:
上面的blade模板如下:
<html> <head> <title>Student Form</title> </head> <body> @if (count($errors) > 0) <div class = "alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif <?php echo Form::open(array('url'=>'/student', 'files'=>'true')); echo 'Upload File.'; echo Form::file('image'); echo Form::submit('Upload'); echo Form::close(); ?> </body> </html>
示例1
現在上傳一個檔案,看看public資料夾中是否有更改。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class StudentController extends Controller { public function index() { return view('student'); } public function uploadFile(Request $request) { //Move Uploaded File to public folder $destinationPath = 'images'; $myimage = $request->image->getClientOriginalName(); $request->image->move(public_path($destinationPath), $myimage); } }
為了將檔案移動到public資料夾,我們使用$request->image->move()
,它可以幫助將上傳的影像移動到目標路徑。public資料夾路徑使用public_path($destinationPath)
檢索。
輸出
以上程式碼的輸出如下:
單擊上傳後,檔案將移動到public/資料夾,如下所示:
示例2
您可以使用檔案例項物件上可用的store()
方法。對於store()
,您必須指定要儲存檔案的路徑。
關於store()方法的另一個重要事項是,它會為儲存的檔案建立一個隨機的唯一名稱並返回路徑。檔案儲存在storage/public/images中,如下所示:
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Student; //use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\DB; use Illuminate\Support\Collection; use Illuminate\Support\Facades\Storage; use URL; use Illuminate\Support\Facades\App; class StudentController extends Controller{ public function index() { return view('student'); } public function uploadFile(Request $request) { $file = $request->file('image'); echo $path = $request->file('image')->store('images'); } }
storage/public/資料夾詳細資訊如下:
輸出
上述程式的輸出如下:
上述路徑可用於在資料庫中儲存檔案位置。
示例3
另一種儲存上傳檔案的方法是使用Storage::putfile()方法。要使用Storage Facade類,您需要包含以下類
use Illuminate\Support\Facades\Storage;
putfile()方法將把給定的檔案儲存到指定的資料夾中。它將在storage/public資料夾中更新。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Storage; class StudentController extends Controller { public function index() { return view('student'); } public function uploadFile(Request $request) { $file = $request->file('image'); echo $path = Storage::putFile('images', $request->file('image')); } }
輸出
以上程式碼的輸出如下
在storage/public/images/資料夾中,您應該看到上傳的檔案:
示例4
如果您看到store()和putfile()更改了檔名,那麼如果您不想更改檔名,則可以使用storeAs()方法。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Student; //use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\DB; use Illuminate\Support\Collection; use Illuminate\Support\Facades\Storage; use URL; use Illuminate\Support\Facades\App; class StudentController extends Controller { public function index() { return view('student'); } public function uploadFile(Request $request) { echo $path = $request->file('image')->storeAs( 'images', $request->image->getClientOriginalName() ); } }
輸出
以上程式碼的輸出為:
在storage/public/images資料夾中,您將看到上傳的檔案:
廣告