2013-12-16 6 views
5

Ich bin nicht in der Lage, eine Datei vom Server mithilfe einer Web API Get Call erfolgreich herunterladen. Der Download scheint zu beginnen, aber dann Chrome wirft:Ressource interpretiert als Dokument, aber übertragen mit MIME-Typ Anwendung/zip:

„Ressource als Dokument interpretiert, sondern mit MIME-Typ application/zip übertragen“

Firefox den das nicht sagen, aber der Download immer noch nicht.

Was ich in der folgenden Setup falsch mache ?:

[HttpGet, Route("api/extractor/downloadresults")] 
    public HttpResponseMessage DownloadResultFiles() 
    { 
     int contentLength = 0; 
     this.ResultFiles.ForEach(f => contentLength = contentLength + f.FileSize); 

     var streamContent = new PushStreamContent((outputStream, httpContext, transportContent) => 
     { 
      ...zip files... 
     }); 

     streamContent.Headers.ContentType = new MediaTypeHeaderValue("application/zip"); 
     streamContent.Headers.ContentLength = contentLength; 
     streamContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment") 
     { 
      FileName = "result.zip" 
     }; 

     var response = Request.CreateResponse(); 

     response.StatusCode = HttpStatusCode.OK; 
     response.Content = streamContent; 
    } 

I auslösen den Download über:

window.location.href = "api/extractor/downloadresults"; 

Mit den daraus resultierenden Header:

Anfrageheaders

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 
    Accept-Encoding:gzip,deflate,sdch 
    Accept-Language:en-US,en;q=0.8 
    Connection:keep-alive 
    Cookie:ASP.NET_SessionId=ibwezezeutmu2gpajfnpf41p 
    Host:localhost:47384 
    Referer:http://localhost:47384/ 
    User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36 

Antwortheader

Cache-Control:no-cache 
    Content-Disposition:attachment; filename=result.zip 
    Content-Length:436102 
    Content-Type:application/zip 
    Date:Mon, 16 Dec 2013 22:36:31 GMT 
    Expires:-1 
    Persistent-Auth:true 
    Pragma:no-cache 
    Server:Microsoft-IIS/8.0 
    X-AspNet-Version:4.0.30319 
    X-Powered-By:ASP.NET 
    X-SourceFiles:=?UTF-8?B?QzpcbmV3VG9vbGJveFxUb29sYm94XFRvb2xib3guV2ViXGFwaVx0ZXJtZXh0cmFjdG9yXGRvd25sb2FkcmVzdWx0ZmlsZXM=?= 
+0

Hallo, tut mir leid, ich habe das gleiche Problem. Was ist die Lösung, um diese Warnung zu beheben? Danke – VAAA

+0

@VAAA Ich fand nie eine Lösung, posten Sie bitte, wenn Sie taten. Am Ende ging ich mit einer Nicht-Streaming-Lösung, aber es ist alles andere als ideal. – parliament

Antwort

1

Haben Sie versucht, die Request-Header zu ändern, zum Beispiel der Header akzeptieren?

Auch here können Sie eine ähnliche Frage finden, einige der vorgeschlagenen Lösungen können Ihnen helfen.