Spring Boot Amazon S3 Загрузка большого файла - PullRequest
0 голосов
/ 25 апреля 2020

Я пытаюсь загрузить большой файл размером около 1,5 ГБ с помощью Spring Boot и Amazon S3 Storage Service.

Ниже приведен код, который я пытаюсь использовать.

boolean isMultipartUpload = ServletFileUpload.isMultipartContent(httpServletRequest);
ServletFileUpload servletFileUpload = new ServletFileUpload();
FileItemIterator fileItemIterator = servletFileUpload.getItemIterator(httpServletRequest);
while (fileItemIterator.hasNext()) {
    FileItemStream fileItemStream = fileItemIterator.next();
    if (!fileItemStream.isFormField()) {
        String fileName = fileItemStream.getName() + "_" + new Date().getTime();
        byte[] bytes = new byte[BUFFER_SIZE];
        List<UploadPartResult> uploadPartResults = new ArrayList<>();
        String uploadId = amazonS3Client.initiateMultipartUpload(new InitiateMultipartUploadRequest("MyS3Bucket", fileName)).getUploadId();
        int bytesRead = 0;
        int partNumber = 1;
        InputStream inputStream = fileItemStream.openStream();
        bytesRead = inputStream.read(bytes);
        while (bytesRead >= 0) {
            UploadPartRequest uploadPartRequest =
                    new UploadPartRequest().withBucketName("MyS3Bucket").withKey(fileName).withUploadId(uploadId)
                            .withPartNumber(partNumber).withInputStream(new ByteArrayInputStream(bytes, 0, bytesRead))
                            .withPartSize(bytesRead);
            uploadPartResults.add(amazonS3Client.uploadPart(uploadPartRequest));
            bytesRead = inputStream.read(bytes);
            partNumber++;
        }
        CompleteMultipartUploadRequest completeMultipartUploadRequest =
                new CompleteMultipartUploadRequest().withBucketName("MyS3Bucket").withKey(fileName).withUploadId(uploadId)
                        .withPartETags(uploadPartResults);

        }
    }

Я сталкиваюсь со следующим исключением.

1) Когда я загружаю файл размером около 6 МБ, Служба: Amazon S3, Код состояния: 400, Код ошибки: EntityTooSmall

2 ) При загрузке огромных файлов java .io.eofexception неожиданно читается в сокете

Любые предложения о том, как избавиться от этой ошибки, а также повысить производительность загрузки

Заранее спасибо

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