C# 到 Javascript:相当于`new MultipartFormData

我有这个遗留的 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

});

如果您需要更多信息,或者对如何改进帖子有疑问或建议,请发表评论!谢谢你的帮助!


白衣染霜花
浏览 229回答 2
2回答

慕桂英3389331

为什么要创建 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”,它使用与表单相同的格式。

尚方宝剑之说

如果我没记错的话,Content-Type 被发布为 multipart/form-data;然而,有一个问题。表单数据内容类型在其末尾有一个边界。我的同事所做的就是不定义 Content-Type 并让它自动确定。这样它就会有正确的边界。另一个注意事项。如果您只发送 JSON;那么,如果可能的话,你不应该使用表单数据;但是,而是json。仅当您尝试发送多种类型的数据时,才真正需要表单数据。例如文本和图像同时存在。
打开App,查看更多内容
随时随地看视频慕课网APP