Я пытаюсь загрузить несколько файлов в S3 с помощью TranferManager. Ниже мой код:
@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)
);
}
Здесь, как вы можете видеть, я даю имя файла как "1234.webp", но имя файла, которое сохраняется в S3, равно "34.webp". Я попробовал большее имя, например "1234567.webp", и снова первые две цифры усекаются, а имя файла - "34567.webp". Что я делаю неправильно?
Обратите внимание, что в примере, который я вставил здесь, я просто загружаю один файл, но в моем фактическом коде я загружаю несколько файлов, но в обоих случаях имена все равно усекаются.