不能用ajax請求下載檔案

gary-liu發表於2016-02-18

原因

ajax的返回值型別是json,text,html,xml型別,或者可以說ajax的接收型別只能是string字串,不是流型別,所以無法實現檔案下載。但用ajax仍然可以獲得檔案的內容,該檔案將被保留在記憶體中,無法將檔案儲存到磁碟。這是因為JavaScript無法和磁碟進行互動,否則這會是一個嚴重的安全問題,js無法呼叫到瀏覽器的下載處理機制和程式,會被瀏覽器阻塞。

實現下載的方法

  1. 隱藏表單,用提交表單的形式
  2. 用window.open() 或 window.location.href()
  3. 建立iframe,iframe的src可以是檔案地址url來直接下載檔案

下載時注意要設定contentType,content-disposition
response.AddHeader(“content-disposition”, “attachment; filename=”);
response.ContentType = “application/octet-stream”;

參考:
http://langgufu.iteye.com/blog/2076373
http://qa.helplib.com/783950

相關文章