java - 尝试将文件上传到 Amazon S3 时返回错误代码 400

标签 java amazon-s3

我是 AWS 的新手,现在我正在尝试编写一个独立的 Java 应用程序来将 PDF 上传到 AWS S3。但是,返回错误:400。

任何人都可以给我一些有关如何解决此错误的一般指导吗?

public class App {

private static String PDF_PATH = "/tmp/pdf-test.pdf";

public static void main(String[] args) throws IOException {

    // prepare AWS credential
    BasicAWSCredentials awsCreds = new BasicAWSCredentials("xxx",
            "yyy");
    AmazonS3 s3Client = AmazonS3ClientBuilder.standard().withRegion("aaa")
            .withCredentials(new AWSStaticCredentialsProvider(awsCreds)).build();

    // upload a test PDF
    byte[] pdfDoc = Files.readAllBytes((new File(PDF_PATH)).toPath());
    PutObjectRequest request = new PutObjectRequest("aaa", "bbb",
            new String(Base64.getEncoder().encode(pdfDoc)));
    ObjectMetadata metadata = new ObjectMetadata();
    metadata.setContentType("application/pdf");
    metadata.setContentLength(pdfDoc.length);
    request.setMetadata(metadata);
    s3Client.putObject(request);
}

}

最佳答案

为了扩展 @AlexGoja 所说的内容,有 three constructors对于 PutObjectRequestOne of them需要三个字符串。但是,第三个字符串参数不是 Base64 编码的文件。我不确定你从哪里得到的。您想使用the constructor that takes a File上传文件:

public class App {

private static String PDF_PATH = "/tmp/pdf-test.pdf";

public static void main(String[] args) throws IOException {

    // prepare AWS credential
    BasicAWSCredentials awsCreds = new BasicAWSCredentials("xxx",
            "yyy");
    AmazonS3 s3Client = AmazonS3ClientBuilder.standard().withRegion("aaa")
            .withCredentials(new AWSStaticCredentialsProvider(awsCreds)).build();

    // upload a test PDF
    File pdfFile = new File(PDF_PATH);
    PutObjectRequest request = new PutObjectRequest("aaa", "bbb", pdfFile );
    ObjectMetadata metadata = new ObjectMetadata();
    metadata.setContentType("application/pdf");
    metadata.setContentLength(pdfFile.length());
    request.setMetadata(metadata);
    s3Client.putObject(request);
}

}

关于java - 尝试将文件上传到 Amazon S3 时返回错误代码 400,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55251651/

相关文章:

Java JComboBox 自定义渲染器和 GTK

css - Django:使用正确的 URL 从 S3 提供 CSS,但无法加载

python - Google App Engine 和 Amazon S3 文件上传

java - 如何在 Spring Cloud Contract stub 上执行 WireMock.verify() 操作?

java - 整个代码私有(private)静态

c# - 适用于 .NET 的 AWS SDK 无法使用 IIS 访问凭证

apache-spark - 使用 kubernetes 在 spark 2.3 中处理 spark-submit 的远程依赖项

php - s3直接上传限制文件大小和类型

java - 在 Postgres 中为特定查询设置 work_mem

java - GWT RequestFactory 是否支持乐观并发控制的实现?