Проблема загрузки файла S3 на AWS - Spring Boot - PullRequest
0 голосов
/ 26 февраля 2020

Я написал кусок кода, чтобы загрузить файл на Amazon S3. Это нормально работает в моей локальной системе. Я могу загрузить файл, и в ответ я получаю URL файла. Но когда я пытаюсь загрузить эти файлы на сервер AWS, они не загружаются, я также получаю ответ 200, и на почтальоне отображается прямоугольник.

Может кто-нибудь помочь мне решить эту проблему? Любая помощь будет оценена. Спасибо!

@Service
public class AmazonClient {

    private AmazonS3 amazonS3;

    @Value("${amazonProperties.accessKey}")
    public String accessKey;

    @Value("${amazonProperties.secretKey}")
    public String secretKey;

    @Value("${amazonProperties.bucketName}")
    public String bucketName;

    @Value("${amazonProperties.endpointUrl}")
    public String endpointUrl;

    @Value("${amazonProperties.region}")
    public String region;

    @PostConstruct
    private void initializeAmazon()
    {
        AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);

        this.amazonS3 =  AmazonS3ClientBuilder
                .standard()
                .withCredentials(new AWSStaticCredentialsProvider(credentials))
                .withRegion(region)
                .build();
    }


    private File convertMultiPartToFile(MultipartFile file) throws IOException
    {
        File convFile = new File(file.getOriginalFilename());
        FileOutputStream fos = new FileOutputStream(convFile);
        fos.write(file.getBytes());
        fos.close();
        return convFile;
    }

    private String generateFileName(MultipartFile multiPart)
    {
        return new Date().getTime() + "-" + multiPart.getOriginalFilename().replace(" ", "_");
    }

    private void uploadFileTos3bucket(String fileName, File file)
    {
        amazonS3.putObject(new PutObjectRequest(bucketName, fileName, file)
                .withCannedAcl(CannedAccessControlList.PublicRead));
    }

    public String uploadFile(MultipartFile multipartFile) {

        String fileUrl = "";

        try
        {
            File file = convertMultiPartToFile(multipartFile);
            String fileName = generateFileName(multipartFile);
            fileUrl = endpointUrl + "/" + bucketName + "/" + fileName;
            uploadFileTos3bucket(fileName, file);
            //file.delete();
        }

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

        return fileUrl;
    }

    public String deleteFileFromS3Bucket(String fileUrl)
    {
        String fileName = fileUrl.substring(fileUrl.lastIndexOf("/") + 1);
        amazonS3.deleteObject(new DeleteObjectRequest(bucketName + "/", fileName));

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