为了账号安全,请及时绑定邮箱和手机立即绑定

C# 到 Javascript:相当于`new MultipartFormData

C# 到 Javascript:相当于`new MultipartFormData

C#
白衣染霜花 2021-11-28 20:04:59
我有这个遗留的 C# 代码(我不知道 C#),我需要在 Javascript 中编写相同的功能(我非常了解 JS)。所以C#代码是:static JavaScriptSerializer serializer = new JavaScriptSerializer();MultipartFormDataContent content = new MultipartFormDataContent();item item_1 = new item{    a = 'a',    b = 'b'};string jsonPayload = serializer.Serialize(item_1);var stringContent = new StringContent(jsonPayload);stringContent.Headers.ContentType.MediaType = "text/json";content.Add(stringContent, item_1.GetType().Name);// then it makes a network request如果我不得不做出最好的猜测,这就是我认为它会在 JS 中做的事情,尽管我必须有点偏离,因为 api 返回 415 Unsupported Media Type:const item_1 = {    a: 'a',    b: 'b'}; const jsonPayload = JSON.stringify(item_1); const formData = new FormData(); formData.set('data', jsonPayload); fetch('/some_api/endpoint',{    headers: {        "Content-Type":"text/json"    },    method: 'POST',    body: formData});如果您需要更多信息,或者对如何改进帖子有疑问或建议,请发表评论!谢谢你的帮助!
查看完整描述

2 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

为什么要创建 FormData 对象?我认为您只想将内容作为 JSON 发送;


const item_1 = {

    a: 'a',

    b: 'b'

}; 

const jsonPayload = JSON.stringify(item_1); 

fetch('/some_api/endpoint',{

    headers: {

        "Content-Type":"text/json"

    },

    method: 'POST',

    body: jsonPayload 

});

从这个文档页面(https://developer.mozilla.org/en-US/docs/Web/API/FormData)看来,这不是 JSON 内容类型;


如果编码类型设置为“multipart/form-data”,它使用与表单相同的格式。


查看完整回答
反对 回复 2021-11-28
?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

如果我没记错的话,Content-Type 被发布为 multipart/form-data;然而,有一个问题。

表单数据内容类型在其末尾有一个边界。

我的同事所做的就是不定义 Content-Type 并让它自动确定。这样它就会有正确的边界。

另一个注意事项。如果您只发送 JSON;那么,如果可能的话,你不应该使用表单数据;但是,而是json。仅当您尝试发送多种类型的数据时,才真正需要表单数据。例如文本和图像同时存在。


查看完整回答
反对 回复 2021-11-28
  • 2 回答
  • 0 关注
  • 228 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信