使用Java将空文件上载到S3

时间:2018-05-09 17:14:27

标签: amazon-web-services amazon-s3

尝试将空数据流式传输到S3时出错 以下是错误:

  

了java.lang.RuntimeException:
  了java.lang.RuntimeException:
  了java.lang.RuntimeException:
  shaded.com.amazonaws.services.s3.model.AmazonS3Exception:
  您提供的XML格式不正确或未针对我们发布的架构进行验证   (服务:Amazon S3;状态代码:400;错误代码:MalformedXML;请求ID:BC194D061F65DC3B),S3扩展请求ID:RjC6LY05Gj93iQTWAdjL / JcQBrl / NzMt749DOwpVsTJ2YN63A0EQmFWaBXxwHzBo + / a8A3MoP70 =

有没有办法通过Java SDK输出流在S3中创建一个空文件?

1 个答案:

答案 0 :(得分:1)

绝对!假设您要执行多部分操作(按照最佳做法),那么您将需要为零字节文件划分一个特殊情况:

AmazonS3 s3Client = /* your S3 client builder technique */
if ( contentLength == 0 ) {
  s3Client.putObject( bucketName, targetKeyName, 
        new FileInputStream( file ), objectMetadata );
} else {
  // Do your multipart upload per usual
}

当请求零部分时,分段上传会抛出MalformedXML异常,但不会在消息中明确指出。您的请求的另一部分也可能格式不正确,例如ObjectMetadata损坏,尽管通常在这种情况下,您会得到更清晰的异常消息。