[英]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.