ASP.NET WEBAPI file upload, issues with IE9

♀尐吖头ヾ 提交于 2019-11-30 05:53:37
Vipul
var task = Request.Content.ReadAsMultipartAsync(streamProvider).ContinueWith<HttpResponseMessage>(t =>
{
    if (t.IsFaulted || t.IsCanceled)
    {
        throw new HttpResponseException(HttpStatusCode.InternalServerError);
    }

    var fileInfo = streamProvider.FileData.Select(i =>
    {

        var info = new FileInfo(i.LocalFileName);
        int FileID = Convert.ToInt32((from h in i.Headers where h.Key =="id" select h.Value.First()).FirstOrDefault());
        string ActualFileName = (from h in i.Headers where h.Key =="ActualFileName" select h.Value.First()).FirstOrDefault();
        return new FileDesc(rootUrl, info, FileID, ActualFileName);
    });
    var response = Request.CreateResponse(HttpStatusCode.OK, fileInfo);
    response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");
    return response;
});

IE 9 does not support the new XMLHttpRequest Level 2 (only IE10+), which means that the jquery.form.js plug-in uses the iframe fallback. Read this: http://www.malsup.com/jquery/form/#file-upload posted by the creator of the jquery.form.js plug-in. He states there that IE will prompt for a download if the return data is JSON or Script. Jou have to force the content-type header to "text/html" if you return JSON.

wizzardz

I have also experienced same kind of issue, this issue will happen only in IE when you are submitting a form and the WebApi function which it refers to returns some value.We havent got a ideal solution for this problem.

In our case what we have done is splitting the function in to two calls. The first function will save the details in the database (assuming that the upload is successful) and on the callback we will submit the form to upload the file. The return type of the webapi upload function is void . if the upload has failed, we will handle that in error callback and then delete the corresponding entry from the database.

I know this is not a good fix at all, but we had go with it.

check this question as well.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!