我想有一个按钮,客户可以在其中查看候选人上传的申请人的文档,但由于某种原因,我不知道为什么它不起作用。
它在离线时工作得很好,但我今天通过FTP部署了这个网站,它不想工作。
我还不到一个初级开发人员,所以请对混乱的代码,保持友好
这是我的代码
上传刀片:
<form action="{{route('cv')}}" method="POST" enctype="multipart/form-data">@csrf
<div class="card">
<div class="card-header">Update CV</div>
<div class="card-body">
<input type="file" class="form-control" name="cv"><br>
<button class="btn btn-success float-right"
type="submit">Update</button>
@if($errors->has('cv'))
<div class="error" style="color: red;">{{$errors->first('cv')}}</div>
@endif
</div>
</div>
路线代码:
Route::post('user/cv','UserController@cv')->name('cv');
控制器代码:
public function cv(Request $request){
$user_id = auth()->user()->id;
$cv = $request->file('cv')->store(public_path('storage/files'));
Profile::where('user_id',$user_id)->update(['cv'=>$request->file('cv')->getClientOriginalName()]);
return redirect()->back()->with('message', 'CV Successfully Updated!');
}
查看CV的代码:
<a href="{{Storage::url($profile->cv)}}" class="btn btn-outline-primary">View my CV</a>
当我点击按钮,我得到这个网址:
cvroad.co.za/storage/Kevin%20Breed.pdf
该文件的名称是:Kevin Breed.pdf,这也是它在我的数据库中的显示方式。
但是仍然没有找到404?
任何帮助都将不胜感激,谢谢!
不要对文件路径进行硬编码,而是使用Laravel的storage_path()
来获得正确的路径。
$cv = $request->file('cv')->store(storage_path('files'));
尽管如果您使用的是Storage::url()
,那么它在public/storage
中查找,因此正确的方法可能是使用public_path
$cv = $request->file('cv')->store(public_path('storage/files'));
此外,在保存到数据库时,您保存的是完整路径,而不仅仅是名称。你可以这样存储名称:
Profile::where('user_id',$user_id)->update(['cv'=>$request->file('cv')->getClientOriginalName()]);