IE 10 - File download issues

拈花ヽ惹草 提交于 2019-12-17 07:39:09

问题


I'm trying to download an excel file (generated dynamically using C#\ASP.NET) and I get the IE10 View Downloads dialog when I click "Open" it says "abc.xls couldn't be downloaded" error but after clicking "Retry" it opens the .xls file properly in the second try.

When I test this in Firefox or Chrome it works fine.


回答1:


I think this may explain the strange behaviour:

"Content-Length and Transfer-Encoding Validation in the IE10 Download Manager"

It seems that IE9 beta had introduced content-length and transfer-encoding validation when downloading files, but found it was too problematic since many servers didn't send proper values for these downloads that are processed through code. Apparently they turned it back on in IE10 however and just hoped for the best.

I'd wager that accurate values being sent when the download is started should clear up this problem. Of course, it shouldn't have been a problem to begin with... ai yi yi.

[Edit]

Turns out this problem was related (for me at least) with using Response.Close() and/or Response.End() in code. This article explains why you shouldn't use these 2 methods, and why HttpApplication.CompleteRequest is the method of choice. Changing our Response.End() and Response.Close() instances to HttpApplication.CompleteRequest solved our IE10 download issues. Like magic. Apparently MSDN now discourages use of these 2 methods (despite years of MSDN code examples containing them), and now advocates use of HttpApplication.CompleteRequest instead.

We were always at war with Eurasia...

[/Edit]




回答2:


I was getting a similar behavior - After fighting this issue for about 12 hours what worked for me:

Changing response header from

Content-Type: application/application/vnd.ms-excel

To

Content-Type: application/octet-stream

Note that I had another an unmentioned symptom: I was setting

Content-Disposition: attachment; filename="Inventory_10-10-2013.xls"

Despite that setting IE used the file name from the URL (so it said "getInventory couldn't be downloaded" - and it saved the wrongly named file in the downloads folder!).

When I changed the 'Content-Type' IE started honoring the file name from the header.

For the record here are all the response headers that I'm setting:

  • HTTP/1.1 200 OK
  • Pragma: Public
  • Expires: Fri, 11 Oct 2013 16:33:38 GMT
  • Cache-Control: max-age=1
  • Content-Disposition: attachment; filename="Inventory_10-10-2013.xls"
  • Content-Transfer-Encoding: BINARY
  • Set-Cookie: fileDownload=true; path=/
  • Content-Type: application/octet-stream;charset=UTF-8
  • Content-Length: 7680
  • Date: Thu, 10 Oct 2013 16:33:38 GMT


来源:https://stackoverflow.com/questions/16655566/ie-10-file-download-issues

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