java - Amazon S3 AWS SDK [Java] - 分段上传如何在http响应中获取自定义 header ?

标签 java amazon-web-services amazon-s3 aws-sdk aws-sdk-java-2.0

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

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

有什么建议我可以如何连接它吗?

所以基本上我想传递来自类中找到的 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,以便我可以操作它。

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

那么有谁知道是否有一个接口(interface)或其他一些对象可以让我访问它?

最佳答案

在对框架进行一些调试之后我坚信使用没有办法访问http响应>传输管理器

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

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

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

关于如何以更好的方式发回此值有什么建议吗?

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

UploadResult result = (UploadResult) ((UploadImpl) up).getMonitor().getFuture().get();
String uniqueIdFromServer = result.getETag();

关于java - Amazon S3 AWS SDK [Java] - 分段上传如何在http响应中获取自定义 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51984755/

相关文章:

java - Spring Security - 授权服务器的主体与资源服务器不同

javascript - 使用nodejs和Lamda正确设置rest api格式

Haskell Servant 和流媒体

amazon-web-services - 直接从表单上传到 S3

python - 需要有效的日期或 x-amz-date header ?

java - PostgreSQL 使用 JPA 和 Hibernate 抛出 "column is of type jsonb but expression is of type bytea"

java - 如何杀死等待中的正在运行的线程?

java - 解码 UTF-8 字符串

amazon-web-services - 为 Neptune 构建 http REST API 请求的 AWS 授权 header

java - 将静态网页与 WAR 文件分离