我知道这个问题已被问到很多,我尝试了每一个解决方案,但它只是为我工作。
我有一个ASP WEB API,如下所示:
private string uploadFolder = ("~/uploads");
[HttpPost]
public async Task<HttpResponseMessage> PostFile()
{
var provider = new MultipartFormDataStreamProvider(uploadFolder);
try
{
StringBuilder sb = new StringBuilder();
await Request.Content.ReadAsMultipartAsync(provider);
foreach (var key in provider.FormData.AllKeys)
{
foreach (var a in provider.FormData.GetValues(key))
{
sb.Append(a.ToString());
}
}
return Request.CreateResponse(HttpStatusCode.OK);
}
catch (Exception e)
{
return null;
}
}
正如您所看到的,它非常简单,它也能够接受multipart / form-data。
我正在使用的Ajax代码如下:
$("#form1").submit(function (e) {
var formData = $(this).serializeArray();
var submitUrl = "api/upload";
$.ajax({
url: submitUrl,
type: "POST",
data: formData,
success: function() {
//window.location("Upload.html");
alert("Success");
},
error: function() {
alert("Error");
}
});
e.preventDefault();
});
$(this).submit();
我发送的表单只包含一个文本字段和一个提交按钮。当我单击提交按钮时,出现错误:405方法不允许。
当我将脚本插入chrome并从那里运行时,它会进入API,但是在
上await Request.Content.ReadAsMultipartAsync(provider)
它在我的捕获中引发异常。
知道是什么原因引起的吗?