我正在将AWS云服务中的S3Client升级为S3AsyncClient。
我有这个函数需要转换为异步:
public PutObjectResponse uploadFileByUrl(String fileUrl, String builderId, PbModel category, String categoryId)
URL url = new URL(fileUrl);
String[] fileNameArray = url.getFile().split("\\.");
var uniqueFileName = prepareFileName(fileNameArray[fileNameArray.length -1]);
URLConnection connection = url.openConnection();
long contentSize = connection.getContentLengthLong();
InputStream inputStream = connection.getInputStream();
return s3Client.putObject(myObjectRequestBuild, RequestBody.fromInputStream(inputStream, contentSize));
}
我有这个将函数转换为异步的功能:
我有这个将函数转换为异步的功能:
public CompletableFuture<PutObjectResponse> uploadFileByUrl(String fileUrl, String builderId, PbModel category, String categoryId)
URL url = new URL(fileUrl);
String[] fileNameArray = url.getFile().split("\\.");
var uniqueFileName = prepareFileName(fileNameArray[fileNameArray.length -1]);
URLConnection connection = url.openConnection();
long contentSize = connection.getContentLengthLong();
InputStream inputStream = connection.getInputStream();
return asyncClient.putObject(myObjectRequestBuild, AsyncRequestBody.fromPublisher(???));
}
如您在上述第二种方法中所见,当我将上述第一种函数转换为async时,我需要使用AsyncRequestBody而不是RequestBody。AsyncRequestBody没有fromInputStream方法,但它有一个我想要使用的fromPublisher方法,该方法以Publisher类型作为参数。
我的问题是如何将我的inputStream转换为Publisher?
fromFile()
替代:https://sdk.amazonaws.com/java/api/latest/software/amazon/awssdk/core/async/AsyncRequestBody.html#fromFile-java.io.File- - Artem Bilan