Php Laravel如何检查文件上传是否成功?
我想知道我是否正在使用ValidationController来验证文件上载,并将其保存在我的UploadController中:Php Laravel如何检查文件上传是否成功?,php,laravel,validation,file-upload,Php,Laravel,Validation,File Upload,我想知道我是否正在使用ValidationController来验证文件上载,并将其保存在我的UploadController中: $file = $request->validated(); 在此之前: if ($request->hasFile('file') { $file = $request->file('file'); if ($file->isValid()) { [...] } } 是否需要执行$request->hasFile('
$file = $request->validated();
在此之前:
if ($request->hasFile('file') {
$file = $request->file('file');
if ($file->isValid()) {
[...]
}
}
是否需要执行$request->hasFile('file')
-block?
在ValidationController中,我已经设置了验证规则,即文件是必需的,并且必须是pdf,因此hasFile('file')
可能是多余的。如果文件没有被上传,那么我会被验证器重定向
我知道
$file->isValid()
部分会检查文件是否已成功上载,因此即使在文件验证之后,这也可能是必要的。首先,您必须在Laravel文件夹中运行php artisan storage:link
,以在Laravel应用程序中设置存储链接。
验证器将帮助您了解文件是否已上载
hasFile函数检查文件是否上传,因此通过该方法,我们可以检查文件是否成功上传,并且您可以为用户方便的webapp发出警报
public function store(Request $request){
$this->validate($request, [
'file' => 'image|nullable|max:1999'
]);
// Handle File Upload
if($request->hasFile('file')){
// Get filename with the extension
$filenameWithExt = $request->file('file')->getClientOriginalName();
// Get just filename
$filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);
// Get just ext
$extension = $request->file('file')->getClientOriginalExtension();
// Filename to store
$fileNameToStore= $filename.'_'.time().'.'.$extension;
// Upload Image
$path = $request->file('file')->storeAs('public/file', $fileNameToStore);
return redirect()->back() ->with('alert', 'Updated!');
} else {
$fileNameToStore = 'noimage.jpg';
}
}
甚至有必要执行$request->hasFile('file')
-block吗
主要问题是,在$request
没有名为file
的文件的情况下,是否会执行此逻辑
如果没有
hasFile
调用,在file
中缺少文件的请求将在$file->isValid()
行上抛出一个错误(“调用成员函数isValid()on null”),因为$file
将为null。我知道所有这一切,我在问是否有必要执行“hasFile()”和“isValid()”)'在我已经验证它之后..我不知道你想做什么,如果你已经通过其他方式验证了它,只需执行以下$request->file->store('files');其中file是你的文件夹名我不知道,它不是我在评论中指定的meLater。。即使我不知道是谁否决了我,请检查@DilipHirapara这并没有回答我的问题,但谢谢,但如果没有上传文件,我将通过行“$file=$request->validated()”重定向到表单,因为此字段的验证规则是必需的,因此此块将不再执行,这就是我想说的ask@ofmiceandmoon你没有在问题中包括你的验证规则,因此我在解释问题时要谨慎。如果您已经测试过该验证,并且对它感到满意,我会说您可以放弃hasFile
条件。我没有包括它们,但编写了它是必需的,我不想再出现另一个代码段。谢谢你的回答。我只是不确定在验证之后这个块是否是多余的。如果您的验证正确地强制文件存在-您的验证规则应该包括required
和file
规则-那么它是多余的。