簡體   English   中英

流式寫入來自JavaScript的下載文件

[英]Streaming writes to a downloading file from JavaScript

我正在嘗試在瀏覽器中生成非常大的PDF文件,並且對大量數據執行此操作是不可行的,因為在文檔完成之前,瀏覽器最終會耗盡內存。 因此,我正在研究一種將寫入操作一次流式傳輸到文件中的方法,以便在完成寫入頁面后可以釋放內存。

雖然我顯然沒有得到文件管理的瀏覽器(顯然)功能,吉米Wärting想出了一個最有趣的解決方案StreamSaver.js 這里的主要思想是使用ServiceWorker來模擬具有Content-Disposition:Header的HTTP請求,該請求將開始下載,然后通過它傳輸數據。

這些方法的問題主要是兼容性:並非所有瀏覽器都支持Service Worker,Web Streams也不受支持,它們迫使我們使用HTTPS,這在某些情況下可能不可行。 因此,我想知道是否存在不涉及使用尖端功能的替代方法?

我不認為您可以通過傳統的Web功能來實現流服務器的功能,而又不能輕易實現(可能是將流數據存儲在具有相對更多支持的 IndexDB中,但還不是全部),所以有理由不選擇最新的Web標准像PWA服務人員一樣。 IndexedDB也幾乎是PWA的一部分,但問題是什么才適合您的解決方案。

現在,大多數主要的瀏覽器中都可以使用服務人員 如果仍然擔心在較舊版本的瀏覽器中支持用戶,則可以考慮使用polyfill為他們支持服務工作者。 由於較少的開發人員關心在這種用例上支持舊瀏覽器,因此您可能會發現關於這種polyfill實現的文檔/支持更少。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM