我的應(yīng)用程序使用 Google Cloud Storage 存儲(chǔ)大文件并使用 Spring Boot 作為后端。我剛剛完成了負(fù)責(zé)下載的控制器的實(shí)現(xiàn),按照我認(rèn)為可能是正確的,但是我從瀏覽器得到的行為不是我所期望的。步驟如果我嘗試下載文件,將發(fā)生以下情況:使用 ReadChannel 從谷歌云存儲(chǔ)中讀取文件(“blob”)通道寫(xiě)入 ByteArrayOutputStream;通道使用緩沖區(qū)寫(xiě)入ByteArrayOutputStream 在 InputStreamResource 中轉(zhuǎn)換然后在 ResponseEntity 中傳遞 inputStream 資源意外的行為如果用戶去下載的控制器,并要求一個(gè)特定的文件,該文件首先完全加載到服務(wù)器上,然后提供給客戶端。同時(shí),客戶端看到服務(wù)器“沒(méi)有響應(yīng)”(因?yàn)榉?wù)器正在加載文件),這不好。當(dāng)文件完全加載到服務(wù)器上時(shí),會(huì)很快出現(xiàn)在“已下載”中。我想要的是避免“無(wú)響應(yīng)”部分,并將文件流式傳輸?shù)娇蛻舳耍拖衲鷩L試下載大文件時(shí)通常發(fā)生的那樣,您會(huì)在 Chrome 中看到文件周圍的“下載”輪.任何幫助理解以下代碼有什么問(wèn)題將不勝感激!
1 回答

紅顏莎娜
TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊
根據(jù)您的問(wèn)題,您的存儲(chǔ)桶中的對(duì)象是私有的,您希望為有限的一群人授予對(duì)它們的訪問(wèn)權(quán)限。如果是這樣 - 簽名 URL 就是您所需要的。
您可以為存儲(chǔ)桶中的特定對(duì)象生成簽名 URL,并將您的用戶重定向到生成的 URL - 因此他將自己下載文件。
添加回答
舉報(bào)
0/150
提交
取消