Загрузить многокомпонентный файл в AWS, не сохраняя его локально - PullRequest
0 голосов
/ 09 мая 2018

Я написал Rest API, который принимает MultipartFile.Я хочу загрузить файлы, которые поступают в Amazon S3.Проблема в том, что я не знаю другого способа, кроме как сначала сохранить его в локальной системе, прежде чем загрузить его на S3.Есть ли способ сделать это?

В данный момент существует проблема с сохранением файла локально, и я ищу обходной путь: Multipart TransferTo ищет неправильный адрес файла при использовании createTempFile

1 Ответ

0 голосов
/ 09 мая 2018

Да, вы можете сделать это. Используйте putObject, которые потребляют InputStream в качестве параметра. Вот пример кода.

public void saveFile(MultipartFile multipartFile) throws AmazonServiceException, SdkClientException, IOException {
    ObjectMetadata data = new ObjectMetadata();
    data.setContentType(multipartFile.getContentType());
    data.setContentLength(multipartFile.getSize());
    BasicAWSCredentials creds = new BasicAWSCredentials("accessKey", "secretKey");
    AmazonS3 s3client = AmazonS3ClientBuilder.standard().withRegion(Regions.US_EAST_2).withCredentials(new AWSStaticCredentialsProvider(creds)).build();
    PutObjectResult objectResult = s3client.putObject("myBucket", multipartFile.getOriginalFilename(), multipartFile.getInputStream(), data);
    System.out.println(objectResult.getContentMd5()); //you can verify MD5
}

Вы можете найти Javadoc здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...