1. 程式人生 > 其它 >axios ondownloadprogress中total總為零,content-length不返回

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