为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 如何检查文件是否成功上传?

Laravel 如何检查文件是否成功上传?

PHP
繁星点点滴滴 2021-11-05 12:56:30
我想知道我是否使用 ValidationController 来验证文件上传并在我的 UploadController 中包含它:$file = $request->validated();在此之前:if ($request->hasFile('file') {  $file = $request->file('file');  if ($file->isValid()) {    [...]  }}甚至有必要做$request->hasFile('file')-block吗?在 ValidationController 中,我已经设置了文件是必需的并且必须是 pdf 的验证规则,因此hasFile('file')可能是多余的。如果文件没有被上传,那么我会被验证器重定向。我知道该$file->isValid()部分会检查文件是否已成功上传,因此即使在验证文件后也可能需要这样做。
查看完整描述

2 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

甚至有必要做$request->hasFile('file')-block吗?

主要的问题将是这个逻辑是否在场景中执行$request不会有一个名为文件file

如果没有hasFile调用,缺少文件的请求file将在 line 上抛出错误(“Call to a member function isValid() on null”)$file->isValid(),就像$filenull 一样。


查看完整回答
反对 回复 2021-11-05
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

首先,您必须php artisan storage:link在 Laravel 文件夹中运行以在 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';

    }


}


查看完整回答
反对 回复 2021-11-05
  • 2 回答
  • 0 关注
  • 386 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信