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

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