我上傳使用Java文件S3 - 這是我走到這一步:AmazonS3 putObject隨同InputStream長度例如
AmazonS3 s3 = new AmazonS3Client(new BasicAWSCredentials("XX","YY"));
List<Bucket> buckets = s3.listBuckets();
s3.putObject(new PutObjectRequest(buckets.get(0).getName(), fileName, stream, new ObjectMetadata()));
文件被上傳,但是當我沒有設定則會出現警告內容長度:
com.amazonaws.services.s3.AmazonS3Client putObject: No content length specified for stream > data. Stream contents will be buffered in memory and could result in out of memory errors.
這是我上傳文件和stream
變量是一個InputStream
,從中我可以得到字節數組這樣的:IOUtils.toByteArray(stream)
。
所以,當我嘗試設置內容長度和MD5(從here拍攝)這樣的:
// get MD5 base64 hash
MessageDigest messageDigest = MessageDigest.getInstance("MD5");
messageDigest.reset();
messageDigest.update(IOUtils.toByteArray(stream));
byte[] resultByte = messageDigest.digest();
String hashtext = new String(Hex.encodeHex(resultByte));
ObjectMetadata meta = new ObjectMetadata();
meta.setContentLength(IOUtils.toByteArray(stream).length);
meta.setContentMD5(hashtext);
這導致以下錯誤,從S3回來:
的您指定的Content-MD5無效。
我在做什麼錯?
任何幫助表示讚賞!
P.S.我在谷歌應用程序引擎 - 我無法將文件寫入到磁盤或者create a temp file因爲AppEngine上不支持FileOutputStream中。
我們有一個winnahhhh!感謝您解答MD5問題的額外努力。這是我正在挖掘的部分... –
Yoh真正的MVP男人! –
這種情況下的內容是什麼?我沒有得到它。我有同樣的警告。請給我一點幫助。? – Shaonline