Laravel API 从 vue js 发送文件数组

Posted

技术标签:

【中文标题】Laravel API 从 vue js 发送文件数组【英文标题】:Laravel API send array of files from vue js 【发布时间】:2022-01-15 06:19:13 【问题描述】:

您好,我在向 API 发送 img 文件时遇到问题

e.target.files.forEach(file => 
     this.images[id]= file;
);

async handleFormSubmit()
    let data = new FormData();
    data.append('images[]',this.images);
    await this.setCreatePost(data)

当我获得 console.log 文件时:

lastModified: 1637855593567
lastModifiedDate: Thu Nov 25 2021 16:53:13 GMT+0100 (Central European Standard Time) 
name: "elena-putina-WuSzNJpys_4-unsplash.jpg"
size: 1027854
type: "image/jpeg"
webkitRelativePath: ""

当我 console.log formData 我得到:

data: Array(1)
0: "[object File]"
length: 1

当我尝试对文件进行字符串化时,我得到:

data: ['[]']

当我在 API 上对其进行解码时,我得到了空对象。

谢谢。

【问题讨论】:

【参考方案1】:

handleSubmitForm() 我是这样追加的:data.append('images[]',this.images);

它需要像这样附加:

this.images.forEach((image) => 
            data.append('images[]', image);
        );

在 Laravel,我可以为每个循环执行如下操作: (在它不起作用之前)

foreach ($request->file('images') as $image) 
   $image_name = $image->getClientOriginalName();
   $image_name = time().'_'.$image_name;
   $image->move(storage_path('images'), $image_name);

【讨论】:

以上是关于Laravel API 从 vue js 发送文件数组的主要内容,如果未能解决你的问题,请参考以下文章

如何在 vue.js 前端通过集合数据显示 laravel 组

Vue.js,如何通过 axios 在 api 链接中发送对象?

根据Laravel Vue Js Api中的关系从多个表中删除数据

如何将数据从 laravel 控制器发送到 vuejs

从 vue 组件的公共文件夹中导入 js 文件(Laravel)

Vue js将数据从api发送到新页面