0

使用 TransferManager 时如何从服务器响应访问自定义标头?

我们在服务器的响应中添加了一个自定义标头,从客户端我们使用带有默认传输管理器的多部分上传

有什么建议我怎么能把它连接起来?

所以基本上我想传递return response.getAwsResponse();类中找到的响应:AmazonS3Client关于方法

private <X, Y extends AmazonWebServiceRequest> X invoke(Request<Y> request,
                HttpResponseHandler<AmazonWebServiceResponse<X>> responseHandler,
                String bucket, String key, boolean isAdditionalHeadRequestToFindRegion) { 

该响应将具有来自服务器的 HTTP 响应,其中包含我所追求的自定义石南花,基本上是在文件 100% 完成时发回的唯一 ID,因此我无法对其进行操作。

我需要将这个自定义标头从响应传递到我使用传输管理器和upload.waitForCompletion()的一开始,我也不想编辑亚马逊的,

那么有谁知道是否有接口或其他对象可以让我访问它?

4

1 回答 1

1

在对框架进行一些调试坚信在使用TransferManager

对于我们正在尝试做的事情,我们需要在文件上传完成并组装后从服务器向客户端发送一个唯一 ID

** 因此,如果您不介意不使用 TransferManager 的美感,您可以编写“您自己的 TransferMananger”,而不是完全控制,但同样在客户端,我们真的不想添加自定义代码,而是有一个标准和简单的方法(但这是我的场景),如果你决定手动完成它可以完成我已经尝试过并且有效!

因此,作为替代方案,我们通过 eTag 从服务器发送,虽然不是很好,但可以完成工作,并保持客户端简单和干净

关于如何以更好的方式发回这个值的任何建议?

Upload up = tm.upload(bucketName, file.getName(), file);

UploadResult result = (UploadResult) ((UploadImpl) up).getMonitor().getFuture().get();
String uniqueIdFromServer = result.getETag();
于 2018-08-23T11:40:16.663 回答