Spring метод Amazon s3 putObject - PullRequest
       134

Spring метод Amazon s3 putObject

0 голосов
/ 21 июня 2020

У меня возникли проблемы с моим методом putObject S3 с пружинным бэкэндом, с загрузкой нескольких частей и асинхронным вызовом S3 весной.

Вот мой контроллер: сервисный метод:

 public S3ResponseObj uploadTos3( MultipartFile file, S3MultiPartUploadRequest uploadRequest ) {
    if(!validateFile(file)){
        throw new S3FileInvalidException("Not a valid Image File");
    }
    String filePath = uploadRequest.getIdentifier()+SLASH+System.currentTimeMillis()+SLASH+uploadRequest.getFileName();
    utilClass.s3UploadService(file,uploadRequest.getPrefix(),filePath); 
    return new S3ResponseObj(String.format(S3_BASE_LINK, bucketName, uploadRequest.getPrefix(),filePath));
}

Асинхронный метод для выполнения последнего вызова метода putObject.

  @Async
    public void s3UploadService( MultipartFile file, String prefix, String filePath){
        Long contentLength = Long.valueOf(file.getSize());
        log.info("content length : {}", contentLength);
        ObjectMetadata metadata = new ObjectMetadata();
        metadata.setContentLength(contentLength);
        log.info("s3 upload beginning : {}", System.currentTimeMillis());
        try{
            PutObjectResult result = s3client.putObject(bucketName,prefix+SLASH+filePath,
                    file.getInputStream(), metadata);
            log.info("s3 upload success : {}", System.currentTimeMillis());


        } catch(IOException e){
            e.printStackTrace();
        }

    }

С помощью этого асинхронного вызова мы видели, что иногда составной файл недоступен, или размер файла становится 0.

Нам нужно сделать асинхронный вызов S3, если это не правильный способ, и что мне делать?

...