【问题标题】:415 Unsupported Media Type Using JQuery/FormData and Web Api415 不支持的媒体类型使用 JQuery/FormData 和 Web Api
【发布时间】:2015-03-10 04:28:36
【问题描述】:

我遇到了一个错误:

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

而且无法弄清楚为什么会这样。

我正在尝试在 JQuery using FormData.

中上传一个 excel 文件

这是代码:

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 的过程中),我再次不确定这是否会产生区别?

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

非常感谢。

【问题讨论】:

    标签: javascript c# jquery asp.net-web-api


    【解决方案1】:

    415 不支持的媒体类型

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

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

    【讨论】:

    • 非常感谢,这肯定回答了问题!我刚刚收到内部服务器错误 500,这与 formdata 中的文件为空有关 - 但这是一个不同的问题。
    猜你喜欢
    • 1970-01-01
    • 2016-11-26
    • 2019-07-28
    • 1970-01-01
    • 1970-01-01
    • 2020-10-06
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    相关资源
    最近更新 更多