Загрузка файла не работает на S3 Ошибка ввода-вывода: разрешение запрещено при загрузке с сервера, но работает с локального - PullRequest
0 голосов
/ 23 апреля 2020

Когда я загружаю файл на S3, используя локальный сервер, т.е. localhost, я могу загрузить на сервер S3, но, когда я пытаюсь загрузить с сервера, появляется ошибка, например IOE Error Message: P_103_Dt_2020-04-23_user1.png (Permission denied) Показывает имя файла и В доступе отказано

public PatientProfilePic uploadFileToS3(MultipartFile multipartFile, Integer patientId,
            boolean enablePublicReadAccess) throws IIOException {

        logger.info("REQUEST RECEIVED:::/uploadProfilePic for  " + patientId);
        String f = Integer.toString(patientId);
        String path = "PatientDocs/";
        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        Date date = new Date();
        String fileName = "P_" + patientId + "_Dt_" + dateFormat.format(date) + "_"
                + StringUtils.cleanPath(multipartFile.getOriginalFilename());
        String fn = path + f + "/ProfilePics/" + fileName;
        File file = new File(fileName);
        try {
            // creating the file in the server (temporarily)
            FileOutputStream fos = new FileOutputStream(file);
            fos.write(multipartFile.getBytes());
            fos.close();
            PutObjectRequest putObjectRequest = new PutObjectRequest(this.awsS3AudioBucket, fn, file);
            if (enablePublicReadAccess) {
                putObjectRequest.withCannedAcl(CannedAccessControlList.PublicRead);
            }
            this.amazonS3.putObject(putObjectRequest);
            logger.info("===================== Upload File - Done! =====================" + putObjectRequest);
            // removing the file created in the server
            file.delete();
        } catch (AmazonServiceException ase) {
            logger.info("Caught an AmazonServiceException from GET requests, rejected reasons:");
            logger.info("Error Message:    " + ase.getMessage());
            logger.info("HTTP Status Code: " + ase.getStatusCode());
            logger.info("AWS Error Code:   " + ase.getErrorCode());
            logger.info("Error Type:       " + ase.getErrorType());
            logger.info("Request ID:       " + ase.getRequestId());
        } catch (AmazonClientException ace) {
            logger.info("Caught an AmazonClientException: ");
            logger.info("Error Message: " + ace.getMessage());
        } catch (IOException ioe) {
            logger.info("IOE Error Message: " + ioe.getMessage());
        }
        return uploadS3Files(multipartFile, patientId, date, fileName);
    }

Это перехват исключения и выполнение метода возврата. Это прекрасно работает, когда я работаю с LocalServer, но когда я разверну его в AWS, он не работает. Предложите мне лучшее решение.

...