使用AWSSDKJava上传S3

使用AWSSDKJava上传S3,java,jsp,amazon-web-services,amazon-s3,amazon,Java,Jsp,Amazon Web Services,Amazon S3,Amazon,我当前的设置是这样的 AmazonS3 s3Client = new AmazonS3Client(); InputStream stream = new URL(filePath).openStream(); ObjectMetadata objectMetadata = new ObjectMetadata(); PutObjectRequest putObjectRequest = new PutObjectRequest(amazonFileUploadLocatio

我当前的设置是这样的

  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);
我总是犯这样的错误

java.lang.IllegalStateException: Content has been consumed
我知道这是电话引起的

 HttpEntity.getContent()
多次

但我似乎无法调试/找到从doc多次调用它的位置

元数据-对象元数据。这至少指定了内容 正在上载的数据流的长度


我从未使用过URL中的输入流,但您似乎缺少该流的长度。

由于您是从文件上载的,因此可以使用PutObjectRequest的构造函数:

 File theFile = new File(filePath);
 PutObjectRequest putObjectRequest = new PutObjectRequest(amazonFileUploadLocationOriginal, keyName, theFile);
 putObjectRequest.withMetadata(objectMetadata);

嗨,你知道怎么计算流的长度吗?我通过输入蒸汽输入的是一个文件URL。