使用ajax将Multipart / form-data表单提交到ASP Web Api

时间:2016-05-13 09:46:44

标签: ajax asp.net-web-api form-submit

我知道这个问题已被问到很多,我尝试了每一个解决方案,但它只是为我工作。

我有一个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)

它在我的捕获中引发异常。

知道是什么原因引起的吗?

0 个答案:

没有答案