问题
my current setup is like this
AmazonS3 s3Client = new AmazonS3Client();
InputStream stream = new URL(filePath).openStream();
ObjectMetadata objectMetadata = new ObjectMetadata();
PutObjectRequest putObjectRequest = new PutObjectRequest(amazonFileUploadLocationOriginal, keyName, stream, objectMetadata);
PutObjectResult result = s3Client.putObject(putObjectRequest);
And I'm always getting this error
java.lang.IllegalStateException: Content has been consumed
And I know it is caused by calling
HttpEntity.getContent()
multiple times
But I can't seem to debug/find where it is being called multiple times
回答1:
From PutObjectRequest doc
metadata - The object metadata. At minimum this specifies the content length for the stream of data being uploaded.
I had never used an input stream from an URL, but looks like you are missing the "length for the stream".
回答2:
Since you are uploading from a file, you could use this constructor for the PutObjectRequest:
File theFile = new File(filePath);
PutObjectRequest putObjectRequest = new PutObjectRequest(amazonFileUploadLocationOriginal, keyName, theFile);
putObjectRequest.withMetadata(objectMetadata);
来源:https://stackoverflow.com/questions/24549685/uploading-s3-using-aws-sdk-java