axios ondownloadprogress中total總為零,content-length不返回


問題:在axios監聽ondownloadprogress下載文件進度發現total為0,其實是response header的content-length丟失,content-length丟失之后就導致無法獲取到該文件的大小,無法處理下載進度。

 

原因:

原因一、很簡單,可能只是后端沒有返回content-length,讓后端工程師加上就行。

原因二、開啟了gzip。開啟gzip之后服務器默認就會開啟文件分塊編碼【Transfer-Encoding: chunked】,分塊編碼把「報文」分割成若干個大小已知的塊,塊之間是緊挨着發送的。

采用這種傳輸方式進行響應時,沒必要帶上Content-Length這個首部信息。因為即使帶上了也是不准確的,所以content-length會沒有。

 

解決方式之一:

后端把文件大小存儲到其他字段,比如:header['x-content-length'];

 

如有其他方式可以討論一下。

 

參考:

https://github.com/axios/axios/issues/1591

https://segmentfault.com/a/1190000006194778


免責聲明!

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



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