laravel - Laravel 5.4 文件上传错误 - 由于未知错误导致文件名未上传
问题描述
我试图通过 laravel 中的以下代码上传多个图像。在我的表单中,有 3 种类型的图像可供选择上传。当用户选择所有图像然后提交表单时。我需要将所有图像上传到同一个文件夹。第一张图片被上传到文件夹中。但随后它给了我以下错误。
由于未知错误,文件“1575738164-main-slider2.webp”未上传。
控制器
if ($request->hasFile('image') && $request->hasFile('image_575') && $request->hasFile('image_768')){
$file = $request->image;
$file_575 = $request->image_575;
$file_768 = $request->image_768;
$name = time().'-'.$file->getClientOriginalName();
$name_575 = time().'-'.$file_575->getClientOriginalName();
$name_768 = time().'-'.$file_768->getClientOriginalName();
$names = [ $name , $name_575 , $name_768];
foreach ( $names as $n){
$file->move('uploads/banners/',$n);
}
$banner = new Banner();
$banner->name = $name;
$banner->name_575 = $name_575;
$banner->name_768 = $name_768;
$banner -> side_color = $request -> side_color ;
$banner->type = $request->type;
$banner->save();
}
请注意,我几乎已经完成了以下问题。 Laravel:由于未知错误,文件未上传
解决方案
首先仅使用time()
方法无法始终为所有三个图像生成唯一的文件名,并且在发生并发请求时。
第二:
$names = [ $name , $name_575 , $name_768];
foreach ( $names as $n){
$file->move('uploads/banners/',$n);
}
你循环的内容是完全错误的。您正尝试将同一图像 $file 移动 3 次。
您必须在循环内移动所有三个图像:`
$file = $request->image;
$file_575 = $request->image_575;
$file_768 = $request->image_768;
`
所以,你可能应该这样做:
$filesToMoves = [$name=> $file, $name_575 => $file2 , $name_768 => $file3];
foreach($filesToMoves as $fileName => $fileToMove){
$fileToMove->move('uploads/banners/',$fileName);
}
推荐阅读
- html - 当视口宽度变小时,标题中的所有内容都会变小。我该如何改变?
- c++ - C++ 语言定义对 static 关键字的范围有什么看法?
- scala - 无法将火花数据框保存为 CSV
- python - 使用 tflearn、tensorflow、numpy 的 Python 聊天机器人出错
- java - org.springframework.batch.core.JobExecutionException:分区处理程序返回一个不成功的步骤
- c# - 查询 WebAPI - webapi 无法反序列化当前 JSON 数组
- javascript - 使用带有 preg_replace 的文本中的电话号码
- reactjs - 使用`gh-pages`在github上部署`create-react-app`时出现问题
- apache-kafka - 如何在 linux 中升级 apache kafka
- c# - 如何在引导模式上显示模型中的对象详细信息