我在本地计算机上运行了一个Spring Boot应用程序,它具有AnazonS3Client依赖性。
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.9.11</version>
</dependency>
使用AmazonS3Client API我连接到在同一台机器上运行的s3Ninja服务器,我使用以下代码上传文件
@Override
public String write(String baseFolder, String fileName, MultipartFile multipartFile) {
String fullName = urlUtils.getFullName(baseFolder, fileName);
try {
PutObjectRequest request =
new PutObjectRequest(
getBucket(),
fullName,
multipartFile.getInputStream(),
getObjectMetadata(multipartFile)
);
request.getRequestClientOptions().setReadLimit(10000000);
s3Client.putObject(request);
} catch (AmazonClientException | IOException e) {
throw new RuntimeException(e);
}
}
public ObjectMetadata getObjectMetadata(MultipartFile multipartFile){
ObjectMetadata metaData = new ObjectMetadata();
metaData.setContentLength(multipartFile.getSize());
metaData.setContentType(multipartFile.getContentType());
return metaData;
}
对于图像,即使尺寸为2MB或更大,此方法也能正常工作,但当我尝试上传任何音频文件时,即使小于1MB,我也会遇到以下问题
Unable to execute HTTP request: Connection reset by peer: socket write error
java.net.SocketException: Connection reset by peer: socket write error
是否有必要使用其他方法发送我的文件?我可以对所有文件类型使用相同的方法吗?