檔案下載功能還是比較簡單的,如果有人不懂的話,請移步到我另一篇文章:https://blog.csdn.net/weixin_49100429/article/details/119144373?spm=1001.2014.3001.5501
功能有了,但是部署上服務器,發現可能有些檔案還是下載失敗,檢測了下代碼,也沒問題,怎么就是失敗呢?在這里,我也是碰壁了很多次之后總結下以下幾點:
1.代碼本身問題,這類問題是最容易找到的,一般直接報錯
2.spring的配置問題,spring.mvc.async.request-timeout=20000,回應時間太短,這里包含網關等類似的攔截機制所需的時間,比如nginx
3.前端在未完成完成之前斷開連接,由于瀏覽器的同步請求最大60s,超過60s自動斷開,如果要解決這個問題,前端采用異步請求,這里推薦使用Blob來做檔案下載,
參考地址:https://blog.csdn.net/csu_passer/article/details/91952460
4.配置問題,這里詳細講一下,由于我的專案是前后端分類,而前端部署在nginx里,而nginx默認開啟一個檔案快取機制,
proxy_buffer_size 512k; proxy_buffers 4 512k; proxy_busy_buffers_size 512k; proxy_temp_file_write_size 512k;
也可以自己配置,那這樣的話就有下面的問題
1.配置的大小不夠
2.由于默認快取存入的是/usr/local/tengine/proxy_temp目錄,該目錄可能沒有權限
解決辦法
1.加多快取檔案的大小
2.賦予該快取目錄權限chmod -R 777 /usr/local/tengine/proxy_temp
或者直接關閉快取機制
proxy_buffering off;
3.nginx里的回應時間也需要注意
proxy_send_timeout 90; #后端服務器資料回傳時間(代理發送超時) proxy_read_timeout 90; #連接成功后,后端服務器回應時間(代理接收超時)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/290986.html
標籤:其他
