415 使用 JQuery/FormData 和 Web API 的不受支持的媒体类型

本文关键字:支持 类型 媒体 API Web JQuery 使用 FormData | 更新日期: 2023-09-27 18:37:15

我收到一个错误:

"POST {URL} 415 (Unsupported Media Type)" error 

并且无法弄清楚为什么会发生这种情况。

我正在尝试上传一个 excel 文件JQuery using FormData.

这是代码:

var formdata = new FormData();
var file = input.get(0).files[0];
formdata.append('content', file);
var url = "/Phrase/Import/" + $('.exportPanel #Language').val()
var ajax = $.ajax({
    url: url,
    type: "POST",
    data: formdata,
    processData: false,
    contentType: false,
    success: function (data, textStatus, jqXHR) {
        //Do something.
    },
    error: function (jqXHR, textStatus, errorThrown) {
        //Do something.
    }
});

下面是控制器代码:

[Route("Import/{languageID}")]
[HttpPost]
public void ImportPhrases([FromUri]int languageID, [FromBody]Stream content)
{
    _service.ImportPhrases(content, languageID);          
}

我注意到,根据 Fiddler 的说法,请求的内容类型与响应的内容类型不同(不确定这是否有区别?

Request: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Response: application/json; charset=utf-8

上面的 JQuery 用于系统的不同部分,但使用 WCF 而不是 Web API(我正在从 WCF 更改为 MVC/Web API),我不确定这是否有区别?

谁能告诉我我做错了什么?

非常感谢。

415 使用 JQuery/FormData 和 Web API 的不受支持的媒体类型

415 不支持的媒体类型

请求实体具有服务器或资源不支持的媒体类型。例如,客户端将图像作为 image/svg+xml 上传,但服务器要求图像使用不同的格式。

contentType确实很重要 - 它告诉服务器您正在上传什么。 在此实例中,您已将值设置为 false 。 服务器无法识别这一点,因此返回 false。 如果不需要特定的内容类型,则应删除contentType行以允许 jQuery 默认值启动。