php - 上传文件时 Laravel 6.0 出现“SplFileInfo::getSize(): stat failed”异常
问题描述
我正在使用 Laravel 6.0 构建一个简单的图像上传系统。
但是由于某些奇怪的原因,即使图像已成功上传到正确的文件夹,我仍然遇到“SplFileInfo::getSize(): stat failed”异常......我可以做些什么 1)跳过这个异常和隐藏它 2) 完全修复它?
我确实看到了将 max_file_size 和 post_max_size 等更改为更高值并重新启动 Apache 的解决方案。我试过了,但它也没有用......而且看起来没有任何明确的解决方案。
这是我的控制器上用于上传功能的内容
public function fileUpload(Request $request) {
$this->validate($request, [
'img' => 'required|image|mimes:jpeg,png,jpg,',
]);
if ($request->hasFile('img')) {
$image = $request->file('img');
$size = $image->getSize();
$characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
$charactersLength = strlen($characters);
$randomString = '';
for ($i = 0; $i < 5; $i++) {
$randomString .= $characters[rand(0, $charactersLength - 1)]; // Generate random 5 character name...
}
$name = $randomString.'.'.$image->getClientOriginalExtension();
$destinationPath = public_path('storage'.'\\'.$request->input('post'));
// Store Image Information //
$data = new Photo();
// Get post number //
$data->order = $request->input('post');
$data->filename = $name;
$data->location = $destinationPath;
$data->save();
// Now move to the destination path //
$image->move($destinationPath, $name);
return refresh();
}
}
我正在使用 MySQL 来存储照片信息,例如图像与哪个帖子相关联、控制器生成的文件名以及图像在机器中的存储位置......如您所见,我正在创建单独的文件夹对于每个职位出于组织目的...
目标是至少禁用异常原因,否则整个工作正常......理论上我应该在上传完成后刷新页面。
解决方案
伙计们,我想通了...
可能需要在 Laravel 中进行一次小更新来解决这个问题……因为这是一个奇怪的“错误”。
因此,显然,getSize();
在我的情况下,您必须执行一个 ,$size = $image->getSize();
并将该值存储在某个地方,无论它是否在 SQL 数据库中……即使您不需要数据……只需将其存储为变量就会引发错误。
一旦我这样做return $size
了,错误就会消失并返回图像大小的字节值......当我将它作为 mySQL 值存储在列中时,问题不再存在......
我希望这可以帮助别人。哈哈。如果您遇到这个问题并且您不明白,我会很乐意解释。:)
推荐阅读
- php - 如何从字符串中提取数字并将其分配给变量
- amazon-web-services - 从 API Gateway 启动和停止 EC2 实例
- python - 使用 python .exe 程序访问文件的权限被拒绝
- reactjs - 无法在顶层调用 React Hook “useCreateContext”
- sublimetext - Sublime Text 4:从终端打开多个窗口
- r - 从函数中返回文本和内联 r 降价
- java - 为什么我的 addValueEventListener 不能正常工作?
- java - mybatis 偶尔使用 selectbyexample 时不返回数据
- vector - 鉴于向量在初始化后将是不可变的,如何在 Rust 中正确初始化向量?
- html - 为什么我不能将 .panel 定价部分移到网页的中心?