如何使用 fetch API 上传图像数组

Posted

技术标签:

【中文标题】如何使用 fetch API 上传图像数组【英文标题】:How do I upload an array of mages using fect API 【发布时间】:2021-03-25 20:48:57 【问题描述】:

我正在尝试使用我的自定义 API(Node javascript)上传一组图像,在这里我只想将文件名保存到我的数据库中,并且文件的上传工作正常(我为上传创建的中间件工作得很好,因为我尝试在 postman 中使用相同的中间件)。

当涉及到实际的 JavaScript 文件时,它不起作用并显示以下错误:

值“'0':,'1':”在路径“images”处转换为字符串失败,图像:值“[ '0':,转换为数组失败, '1': ]" 在路径“图像”

这是我的代码

const createProperty = ['city', 'propertyType', 'propertyName', 'images'];

const newProperty = new Array();
for (var i = 0; i < myids.length; i++) 
  newProperty[i] = $(myids[i]).val();



newProperty[myids.length] = [document.getElementById('PropertyPhotos').files];

const data = ;
createProperty.forEach((id, index) => 
  data[createProperty[index]] = newProperty[index]
)


await createData(data);

// here is the CreateDate function

export const createData = async (data) => 
  try 
    const res = await axios(
      method: 'POST',
      url: '/api/v1/properties',
      data
    );

    if (res.data.status === 'success') 
      showAlert('success', 'Property Created Successfully');
    
    console.log(res.data);
   catch (err) 
    showAlert('error', err.response.data.message);
    console.log(err.response.data.message);
  
        

【问题讨论】:

我认为您应该使用 JSON.stringify 将对象转换为字符串。 newProperty 和 document.getElementById('PropertyPhotos').files 的值是多少?您想插入/复制图像文件并从中获取二维数组吗?请使用控制台日志或调试器来确定问题出现的位置并发布代码的预期行为 迭代时myids中有什么?请在您的代码中显示。 【参考方案1】:

看起来您正在使用 Mongo。看看here 和here。

要发送文件,您需要使用表单数据,但我在您的代码中没有看到它。

const formdata = new FormData();

formdata.append("file", fileInput.files[0], "/filepath.pdf");

【讨论】:

你好,我不知道,但每当我使用 formdata 时,我上面的函数 createData 无法正常工作,就像它给我 null 作为数据一样。请帮助我 @AshishArjun 显示前后数据传输的完整代码

以上是关于如何使用 fetch API 上传图像数组的主要内容,如果未能解决你的问题,请参考以下文章

如何使用节点、createPresignedPost 和 fetch 将图像文件直接从客户端上传到 AWS S3

使用 Multer 将带有 fetch 的图像上传到 Express

如何使用 fetch 发布图像?

如何在 fetch 中传递 POST 参数以在 React Native 中将图像上传到服务器?

如何使用 api 将图像上传并发布到linkedin?

如何在 React 中使用 fetch 正确处理来自 REST API 的数据对象