当图像已上传到文件夹中时,如何解决 laravel 中的“文件不存在或不可读”
Posted
技术标签:
【中文标题】当图像已上传到文件夹中时,如何解决 laravel 中的“文件不存在或不可读”【英文标题】:how to solve "file does not exist or is not readable" in laravel while the image have been uploaded in folder 【发布时间】:2020-02-13 06:44:42 【问题描述】:我在尝试上传文件时遇到此错误,但文件正在上传,因为我可以在目录中找到它!但它没有继续,而是抛出了这个错误,我一直在使用这个脚本,直到laravel 6.0
,我不明白为什么!
谢谢
$image_name=Str::random(12);
$ext=strtolower($image->getClientOriginalExtension());
$image_full_name=$image_name.'.'.$ext;
$upload_path='upload/article/';
$image_url=$upload_path.$image_full_name;
// $success=1;
$success=$image->move($upload_path,$image_full_name);
// return $success;
if($success)
$data['post_photo']=$image_url;
DB::table('post')->insert($data);
Session::put('message','article posted Successfully');
return Redirect::to('create-post');
这是我的 html 代码
<div class="custom-file">
<input type="file" class="custom-file-input form-control " id="customFileLang" name="photo" >
<label class="custom-file-label" for="customFileLang">Choose Picture </label>
</div>
@error("photo")
<p style="color:red;" class="mx-4"> $message </p>
@enderror
```
【问题讨论】:
运行php的网络服务器是否有权将数据存储在/tmp
-文件夹中?
是的,因为在另一个项目上我有它的工作原理! @feeela
也给你的html代码
@TanvirAhmed,我添加了它们。
【参考方案1】:
Сheck 调用 $validator->fails()
发生了一次。
在我的情况下,在我的控制器操作中第一次调用$validator->fails()
,在检查删除文件之后。第二次调用找不到这个文件。
【讨论】:
【参考方案2】:如果文件上传成功,那么问题出在其他地方,可惜这个错误表示的太混乱了,并不是真正的错误。 实际错误发生在您将数据插入数据库的地方,在您的情况下是这一行:
DB::table('post')->insert($data); // the case in this question
在我的例子中是我试图将博客插入数据库的一行:
Blog::create($data); // my case
为了找出真正的错误,您必须使用 try 和 catch。
try
DB::table('post')->insert($data); // for my case : Blog::create($data);
catch (\Exception $e)
dd($e);
当你转储并死掉$e
,你会看到实际的错误:
对我来说,在我的情况下,实际错误是:“Field 'author_type' doesn't have a default value”,但由于某些未知原因 laravel 6.0 显示当您在表单中上传数据时出现“文件不存在或不可读错误”。
【讨论】:
【参考方案3】:如果其他人遇到此错误,请尝试检查您的 php.ini...确保您的 upload_max_filesize 与您的 post_max_size 一样大。我有 1000M 的 post_max_size,但只有 100M 的 upload_max_size。上传会搅动很长时间,然后抛出上面的错误(除了它有“”作为文件名,并且没有上传任何文件)。
【讨论】:
以上是关于当图像已上传到文件夹中时,如何解决 laravel 中的“文件不存在或不可读”的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 laravel jrm2k6/cloudder 将图像上传到 cloudiary 上的特定文件夹
Laravel 8 UniSharp File Manager 3 - 图片已上传但未显示