我正在使用POST請求與身體動態地在服務器端創建一個指定的文件,並將其作爲響應流式傳輸到客戶端。客戶端的問題在於該文件正在被下載到響應對象(瀏覽器的緩存內存,我想,作爲臨時文件)而不是PC的硬盤驅動器。強制瀏覽器下載一個大文件
如何直接傳遞字節流以供瀏覽器處理並直接進入/ Downloads文件夾或用戶設置下載的任何位置?
文件大小非常大,小工具硬盤上沒有足夠的空間來創建它併爲GET請求提供鏈接。所以我需要立即創建它並以POST響應的形式傳輸到客戶端。
現在我已經用Angular編寫了我的代碼,但語言並不重要。我想了解瀏覽器如何處理這種情況。
當我執行HTTP請求時,我敢打賭,瀏覽器在傳遞給套接字之前會做一些事情。我確信瀏覽器在接收到的請求之前也會執行某些操作,然後將它傳遞給執行請求的代碼片段。
我的意思是你只能通過設置響應標題使瀏覽器下載文件到/ Downloads?如果數據包被瀏覽器「盜取」,那麼等待HTTP請求會發生什麼?或者,當響應頭到達響應對象時,您能否以某種方式通知瀏覽器響應的主體是我們希望下載到/ Downloads的文件字節流?
而且我也有可能修改我的服務器代碼。
編輯更詳細的解釋:
我的服務器正在發送5GB文件到客戶端。而不是隻在瀏覽器的臨時存儲器中接收該文件,我想直接將文件保存在硬盤上。
但自然瀏覽器阻止直接訪問用戶計算機,所以我不能在那裏寫它。那麼如何傳遞瀏覽器的字節流來處理並保存到文件中呢?
你不能。下載位置由客戶決定。 「此PC /下載」通常是Windows上的默認設置,但客戶可以決定其他內容。 – PHPglue
試圖將文件下載到用戶文件系統的特定文件夾的目的是什麼? – guest271314
問題是一般在PC上下載文件,而不是將其下載到特定路徑。目前我只能將文件下載到瀏覽器緩存中,並且不會將其下載到PC的硬盤上。我希望這個澄清一點。 – user3622167