Я пытаюсь загрузить большой файл размером около 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 неожиданно читается в сокете
Любые предложения о том, как избавиться от этой ошибки, а также повысить производительность загрузки
Заранее спасибо