ThinkPHP ajax請求沒法下載文件問題

最近用到thinkPHP自帶的函數下載文件,Http:download。可是調試了很長時間都發現,無論什麼格式的文件下載,只有在response裏面會顯示下載好的內容,沒法以瀏覽器的形式將文件下載下來。經過嘗試不一樣方法,修改文件後綴、修改下載路徑、修改download的header等各類方法都無法解決下載問題。

 

最終定位到js位置,發現下載方式採用ajax異步請求的方式進行下載,網上搜了一下,改爲了使用location.href = APP +"xxxxx.download?filename="+filename的連接方式,就能夠經過瀏覽器方式下載了。
結合網上相同狀況緣由是: 由於response緣由,通常請求瀏覽器是會處理服務器輸出的response,例如生成png、文件下載等,然而ajax請求只是個「字符型」的請求,即請求的內容是以文本類型存放的。文件的下載是以二進制形式進行的,雖然能夠讀取到返回的response,但只是讀取而已,是沒法執行的,說白點就是js沒法調用到瀏覽器的下載處理機制和程序。
相關文章
相關標籤/搜索