簡體   English   中英

嘗試將文件上傳到 Amazon S3 時返回錯誤代碼 400

[英]Error code 400 returns when trying to upload file to 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 所說的內容, PutObjectRequest 有三個構造PutObjectRequest 其中之一需要三個字符串。 但是,第三個字符串參數不是 Base64 編碼的文件。 我不確定你從哪里得到的。 您想使用帶有 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);
}

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM