如何在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資料夾中,您將看到上傳的檔案:

更新於:2022年8月30日

28K+ 次檢視

啟動您的職業生涯

完成課程後獲得認證

開始
廣告