无法在 Laravel 中使用 vue.js 上传多个图像
Posted
技术标签:
【中文标题】无法在 Laravel 中使用 vue.js 上传多个图像【英文标题】:cannot upload multiple image using vue.js in Laravel 【发布时间】:2020-12-01 03:38:00 【问题描述】:我想在 laravel 中上传多张图片,因为我正在使用以下代码,但出现错误:
消息:“调用成员函数 getClientOriginalExtension() on 字符串
formData.append('gallery_img[]', this.form.gallery_img);
uploadGalleryImg(e)
var files = e.target.files;
if (!files.length)
return;
for (var i = files.length - 1; i >= 0; i--)
this.form.gallery_img.push(files[i]);
,
控制器:
if (count(array($request->gallery_img)))
foreach ($request->gallery_img as $image)
$fileName = time().'.'.$image->getClientOriginalExtension();
$image->move(public_path('img/gallery_img/'), $fileName);
【问题讨论】:
我猜你的this.form.gallery_img
不包含 File
实例。你能添加dd('$request->gallery_img)
的输出吗?
@F***Bettag:当我控制 this.form.gallery_img.push 时,它会打印我上传的多个文件
那些是File
的实例?可以加个截图吗?
试试foreach ($request->file('gallery_img') as $image)
@F***Bettag:添加截图请查看
【参考方案1】:
试着让你的 foreach 像这样:
foreach ($request->gallery_img as $key => $image)
问题是 $image 被认为是一个字符串,所以我认为它是键,它的值是实际的图像。 如果这不起作用,并且您只想从文件名中获取扩展名,则可以使用带有“。”的explode native php函数。分隔符。
$explodedImage = explode(".",$image);
$extension = $explodedImage[count($explodedImage)-1]
【讨论】:
当我 dd($request->gallery_img) 我得到 array:1 [ 0 => "[object File],[object File]" ] 现在我收到此错误:消息:“调用字符串上的成员函数 move()”,... 确保您在表单中提供了 enctype="multipart/form-data"。您可以使用我的第二种解决方案来获取文件的扩展名。 如果您在原始代码中更改它会怎样:$request->file('gallery_img') 而不是 $request->gallery_img 您找到解决方案了吗?我有同样的问题以上是关于无法在 Laravel 中使用 vue.js 上传多个图像的主要内容,如果未能解决你的问题,请参考以下文章
无法在 laravel 中使用 vue.js 显示存储目录中的图像
将 Vue.js 安装到 Laravel 后无法加载示例组件