将图像数据从Ajax发布到Web API

时间:2013-02-07 19:53:19

标签: ajax asp.net-web-api

我正在尝试使用我在http://www.asp.net/web-api/overview/working-with-http/sending-html-form-data,-part-2找到的示例代码将图像数据传递给Web API方法,我发现MultipartFormDataStreamProvider.FileData始终为空。为什么会这样?此外,这是正确的方法吗?有选择吗?我试图只传递一张图片。

电话

var t = new FormData();
t.append('file-', file.id);
t.append('filename', file.name);
t.append('Size', file.size);

$.ajax({
    url: sf.getServiceRoot('mySite') + "upload/PostFormData",
    type: "POST",
    data: t,
    contentType: false,
    processData: false,
    beforeSend: sf.setModuleHeaders
}).done(function (response, status) {
    alert(response);
}).fail(function (xhr, result, status) {
    alert("error: " + result);
});

});

public async Task<HttpResponseMessage> PostFormData()
    {
        // Check if the request contains multipart/form-data.
        if (!Request.Content.IsMimeMultipartContent())
        {
            throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
        }

        string root = HttpContext.Current.Server.MapPath("~/App_Data");
        var provider = new MultipartFormDataStreamProvider(root);

        try
        {
            // Read the form data.
            await Request.Content.ReadAsMultipartAsync(provider);

            // This illustrates how to get the file names.
            foreach (MultipartFileData file in provider.FileData)
            {
                Trace.WriteLine(file.Headers.ContentDisposition.FileName);
                Trace.WriteLine("Server file path: " + file.LocalFileName);
            }
            return Request.CreateResponse(HttpStatusCode.OK);
        }
        catch (System.Exception e)
        {
            return Request.CreateErrorResponse(HttpStatusCode.InternalServerError, e);
        }
    }

1 个答案:

答案 0 :(得分:0)

通过表单发布时,我可以正确获取fileData,

如样本中的WebAPI upload error. Expected end of MIME multipart stream. MIME multipart message is not complete

祝你好运,

相关问题