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


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

 

最終定位到js位置,發現下載方式采用ajax異步請求的方式進行下載,網上搜了一下,改成了使用location.href = APP +"xxxxx.download?filename="+filename的鏈接方式,就可以通過瀏覽器方式下載了。
結合網上相同情況原因是: 因為response原因,一般請求瀏覽器是會處理服務器輸出的response,例如生成png、文件下載等,然而ajax請求只是個“字符型”的請求,即請求的內容是以文本類型存放的。文件的下載是以二進制形式進行的,雖然可以讀取到返回的response,但只是讀取而已,是無法執行的,說白點就是js無法調用到瀏覽器的下載處理機制和程序。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM