簡體   English   中英

如何將圖像上傳到Amazon S3

[英]how to upload image to Amazon S3

我正在開發一個將圖像(jpg)上傳到AWS S3的Android應用。 圖片正在上傳,但無法使用網絡瀏覽器打開:圖片無效或以字符串形式打開。

//skipping error handling for simplicity

InputStream is = Utils.streamFromUri(this, uri);
byte[] buffer = new byte[FileUtils.getInputSize(is)];
...
//is is restored at this point
is.read(buffer);
String data = new String(buffer);
S3.createObjectForBucket(bucketName, objectName, data)

您能否分享一個可上傳的工作代碼,或者給出一些解決方法的指導?

謝謝

兩件事情。

在amazone S3中。 您需要將圖像上的特權設置為“所有人:讀取”。 我正在使用Firefox插件S3FOX,然后右鍵單擊,按“編輯ACL”,然后為每個人提供“讀取”權限。

您可能必須設置一個custome標頭。 內容類型:圖片/ jpeg

這取決於您如何上傳文件,通常這是由automagic處理的。

您鏈接的文件已損壞。 如果您知道計算機上的圖像質量很好,請嘗試使用其他工具將圖像上傳到S3。

http://www.s3fox.net/

第一個文件僅填充0。 第二個文件不是jpeg,但似乎是某種轉換的結果(其中包含一些照片數據)。 在正常情況下,上傳應該沒有問題。 如果您提供有關上傳方式(代碼或工具)的詳細信息,我們可以從那里進行。


更新資料

您用於獲取上傳數據的代碼可能無法正常工作。 我不知道您的實用程序的詳細信息,但是當您這樣做時

FileUtils.getInputSize(is)

它可能會讀取整個流,因此您將其讀到流的末尾,並且不讀取任何內容進行上載。 我強烈建議您使用Apache Commons IO讀取數據。 將其讀入內存后,您可以得到它的大小。


更新2

您正在使用字節到字符串的轉換。 來自String(byte[])文檔

Constructs a new String by decoding the specified array of bytes using 

平台的默認字符集。

由於您使用的是二進制數據,因此它正在發生轉變。 實際上,從第二個文件ef bf bd開頭的第二個文件中也可以看到它,它是Unicode替換字符。 因此,請勿使用字符串存儲二進制數據。

暫無
暫無

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

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