【问题标题】:How is multipart formdata works?多部分表单数据是如何工作的?
【发布时间】:2019-05-17 19:35:39
【问题描述】:

这是我第一次尝试使用 FormData 上传图片。基本上它是一个带有标题的 POST 方法:content-type: 'multipart/form-data' 和一个请求正文如下:

const data = new FormData();

data.append('someKey', {"amount": "300"});
data.append('photo', {
                       filename: 'file_a.png', 
                       type: 'image/png', 
                       uri: /Users/isaac/Library/...../file.png 
});

当数据没有 photo 键时,它似乎工作正常,但是当添加键 photo 时,服务器将抛出错误代码 500。我想知道哪一部分可能出错了?

我也尝试过content-type: 'application/x-www-form-urlencoded',数据保持不变,但两个结果相同,给我错误 500?

【问题讨论】:

  • 你能在服务器上记录错误吗?
  • @Roi:目前不可能,因为它由后端团队处理。在继续之前,我希望确保我在综合方面 100% 正确
  • 您能否尝试像处理上面的对象一样将所有字段包围在 quoutes 中。所以它将是 "filename": "file_a.png", "type": "image/png", "uri" "/Users..."
  • 让我在这里的代码很难。您已显示前端代码但未显示后端代码。强类型语言管理上传可能很糟糕。即使您错过了前端类型方面的某些内容,如果您的后端 rest API 设计不符合标准,它们也会抛出 500 错误。后端看起来很简单,但如果做得不好或没有人完成,可能会很困难。您还可以根据后端文档放置所需的内容吗?文档是最重要的,在您的问题中也是如此。请添加 swagger 或打开 API REST API 要求文档。它会帮助别人,也会帮助你。

标签: reactjs rest api react-native axios


【解决方案1】:

来自符合 HTTP 规范的服务器的 500 响应意味着 某事 在服务器上出错了,这不是你的错。在响应中没有任何上下文,基本上不可能说出“某事”是什么。您需要让您的后端团队解决该错误。 400 响应将表明故障出在您身上。

如果您的服务器不符合 HTTP 规范,那么响应意味着后端团队希望它们意味着什么。如果他们没有告诉你,你必须问他们。无论哪种方式,您都需要与后端团队交谈。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-07
    • 2015-10-31
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 2018-12-06
    • 1970-01-01
    相关资源
    最近更新 更多