在Laravel表單請求中,獲取上傳的文件對象:$file=$request->file('name');
1.在文件對象中,我們可以獲得以下主要信息:
//文件的擴展名 $file->getClientOriginalExtension(); //文件的原名 $file->getClientOriginalName(); //文件大小 $file->getSize(); //文件臨時的絕對路徑 $realpath = $file->getRealPath(); //把臨時文件移動到指定的位置,並重命名 $file->move($path,$name);
當$file->move返回文件對象結果時,說明文件上傳成功
2.在laravel中還是通過$file->store($path)來上傳文件
$file->store($path)只需要指定$path目錄名即可,且該目錄名在storage/app目錄下,系統會MD5文件內容自動生成文件名,此返回值為文件路徑+文件名
如果需要自定義文件名或者文件過大時!可使用$file->storeAs($path,$name)自定義文件名,同樣該目錄在storage/app目錄下,返回值為文件路徑+文件名
以上2中方法都可以進行文件存儲,但是第一種可以把文件存儲項目的任意位置中,而第二種只能存儲在strorage/app目錄下的任意位置。當上傳的文件需要考慮到安全,防止盜鏈等問題時應把文件上傳到非public目錄下。
3.文件的響應(瀏覽器中顯示文件)
return response()->file($pathToFile);
$pathToFile為文件所在路徑和文件名;
4.文件強制下載
return response()->download($pathToFile);
return response()->download($pathToFile,$name,$headers);
生成強制用戶瀏覽器下載給定路徑文件的響應,download 方法接受文件名作為第二個參數,該參數決定用戶下載文件的顯示名稱,你還可以將 HTTP 頭信息作為第三個參數傳遞到該方法
