【问题标题】:Uploading an empty file to S3 with Java使用 Java 将空文件上传到 S3
【发布时间】:2018-08-21 23:45:17
【问题描述】:

当我尝试将空数据流式传输到 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 中创建一个空文件?

【问题讨论】:

    标签: amazon-web-services amazon-s3


    【解决方案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 已损坏,但通常在这些情况下您会收到更清晰的异常消息。

    【讨论】:

      猜你喜欢
      • 2020-04-29
      • 1970-01-01
      • 1970-01-01
      • 2019-12-13
      • 2016-02-06
      • 2016-06-23
      • 2017-10-18
      • 2017-12-06
      • 1970-01-01
      相关资源
      最近更新 更多