Для веб-сайта электронной коммерции, если у меня есть список продуктов, каждый из которых имеет 10 изображений. связан с ними. Как сохранить изображения в корзину S3, когда запрос поступает из пользовательского интерфейса (ReactJS) в серверную часть (Java). Я реализовал для создания корзины, в которой будет папка для каждого продукта с его изображениями в нем. Я создал роль политики доступа S3 к экземпляру ec2. Я использую AWS S3 SDK для взаимодействия с AWS S3. Я раскрыл API отдыха, используя список MultiPartResolver для хранения изображений, как показано ниже:
@PostMapping(value = "product/{productId}", consumes = MediaType.MULTIPART_FORM_DATA_VALUE,
produces = MediaType.APPLICATION_JSON_VALUE)
public void uploadImages(
@PathVariable Long productId,
@RequestParam(name = "files", required = false) List<MultipartFile> files)
И в службе IMPL:
ArrayList<File> files = new ArrayList<>();
// TODO: Shall we upload zip files??
for (MultipartFile multipartFile : multipartFiles) {
files.add(convertMultiPartFileToFile(multipartFile));
}
TransferManager transferManager = TransferManagerBuilder
.standard()
.withS3Client(amazonS3Client)
.build();
try {
//TODO: Logic to create a directory
MultipleFileUpload multipleFileUpload = transferManager
.uploadFileList(amazonClientConfig.getImagesBucketName(), listingId.toString(),
new File("."), files);
// loop with Transfer.isDone()
XferMgrProgress.showTransferProgress(multipleFileUpload);
// or block with Transfer.waitForCompletion()
XferMgrProgress.waitForCompletion(multipleFileUpload);
} catch (AmazonServiceException e) {
log.error(e.getErrorMessage());
System.exit(1);
}
transferManager.shutdownNow();
private File convertMultiPartFileToFile(MultipartFile file) {
File convertedFile = new File(file.getOriginalFilename());
try (FileOutputStream fos = new FileOutputStream(convertedFile)) {
fos.write(file.getBytes());
} catch (IOException e) {
log.error("Error converting multipartFile to file", e);
}
return convertedFile;
}
Не уверен, что это правильный подход, пожалуйста, предложите мне любые изменения или укажите на статью, которая может помочь.