簡體   English   中英

從Webapp將圖像上傳到S3,而不將其存儲在服務器中

[英]Upload image to S3 from webapp without storing it in server

我有一個帶有Javascript前端和Java后端的Web應用程序。 我有一個用例,用戶可以在其中上傳他們的個人資料圖片。 用例很簡單:從用戶瀏覽器發送圖像並將其以最大文件大小存儲在S3中。 當前,前端將圖像數據流發送到后端,然后使用AWS Java SDK將圖像存儲在S3中。

后端必須事先將此圖像存儲在文件系統中,以便知道圖像文件的大小(並避免讀取超出特定最大值的更多字節),因為S3要求它與文件內容一起發送PUT對象請求長度。

我可以通過AWS還有其他方法嗎? 使用其他服務? 也許是Lambda? 我不喜歡這種必須事先將文件存儲在文件系統中,然后再次打開流以將其發送到S3的方法。

提前非常感謝您。

你可能會得到上所提到的客戶端文件大小在這里 ,但考慮瀏覽器的支持。 您不應該與客戶端代碼共享密鑰。 我相信在這種情況下應使用查詢字符串身份驗證。

假設最大文件大小小於可用內存,為什么不能只讀取byte[]或類似的內容而不將其寫入磁盤就可以將其發送到S3。 您還應該能夠以這種方式獲得尺寸。

取決於您使用的S3 Java客戶端。 如果它允許您從ByteArrayInputStream讀取,則您應該能夠執行任何操作。

看起來您可以使用InputStream 參見javadoc

new PutObjectRequest(String bucketName,
                String key,
                InputStream input,
                ObjectMetadata metadata)

暫無
暫無

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

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