AWS TransferManager uploadFileList在S3中截断文件名

T A*_*nna 12 java amazon-s3 amazon-web-services awss3transfermanager

我正在尝试使用TranferManager批量上传S3中的几个文件.以下是我的代码:

@GetMapping("s3/batch/upload/base64")
public void uploadBase64ToWebp() {

     List<File> fileList = new ArrayList<>();
    String rawData = "1";
    String base64Data = Base64.encodeBase64String(rawData.getBytes(StandardCharsets.UTF_8));
     byte[] data = getBinaryImageData(base64Data);
     File file = new File("1234.webp");
     try {

         FileUtils.writeByteArrayToFile(file, data);

     } catch (IOException e) {

         System.out.println(e);
     }
     fileList.add(file);
     ObjectMetadataProvider metadataProvider = new ObjectMetadataProvider() {
            public void provideObjectMetadata(File file, ObjectMetadata metadata) {

                metadata.setContentType("image/webp");
                metadata.getUserMetadata().put("filename", file.getPath());
                metadata.getUserMetadata().put("createDateTime", new Date().toString());
            }
        };
        TransferManager transferManager = TransferManagerBuilder.standard().withS3Client(amazonS3).build();
     transferManager.uploadFileList(bucketName, "school/transactions", new File("."), fileList, metadataProvider);
}

private byte[] getBinaryImageData(String image) {

        return Base64.decodeBase64(
            image
                .replace("data:image/webp;base64,", "")
                .getBytes(StandardCharsets.UTF_8)
        );
    }
Run Code Online (Sandbox Code Playgroud)

在这里,正如您所看到的,我将文件名称设置为"1234.webp",但在S3中保存的文件名是"34 .webp".我尝试了一个更大的名字,如'1234567.webp',然后前两个数字被截断,文件名是'34567.webp'.我做错了什么?

请注意,在我粘贴在这里的示例中,我只是上传了一个文件,但在我的实际代码中,我确实上传了多个文件,但在这两种情况下,无论如何都会截断名称.

T A*_*nna 6

好的,这是一个Java IO问题.我更新了以下内容以显示路径并且它有效.

旧:

File file = new File("1234.webp");
Run Code Online (Sandbox Code Playgroud)

新:

File file = new File("./1234.webp");
Run Code Online (Sandbox Code Playgroud)

还在试图弄清楚为什么前两个字母被删除了.

  • 前两个字符被删除,因为提供的`pathname`字符串被转换为抽象的`pathname` - 请参阅https://docs.oracle.com/javase/7/docs/api/java/io/File.html,https ://stackoverflow.com/a/24611323/5787099,和/sf/ask/2711182071/ (3认同)