[英]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。
第一個文件僅填充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.