0

我正在使用 rackspace cloudfiles java api。到目前为止,我已经设法编写代码来生成临时 URL 以下载文件,使用机架空间的 java api 使用此处提供的示例。

https://github.com/jclouds/jclouds-examples/blob/master/rackspace/src/main/java/org/jclouds/examples/rackspace/cloudfiles/GenerateTempURL.java

我还可以在 rackspace api 文档中看到,它确认我有可能在下载文件时使用临时 URL 覆盖文件名。

http://docs.rackspace.com/files/api/v1/cf-devguide/content/TempURL_File_Name_Overrides-d1e213.html

不幸的是,我无法在那些 java api 中找到任何方法来实现相同的目标,有人可以帮我吗?

4

3 回答 3

1

好吧,这就是我的结局

RegionScopedBlobStoreContext blobStoreContext = ContextBuilder
            .newBuilder(RS_PROVIDER)
            .credentials(RS_USER_NAME, RS_API_KEY)
            .buildView(RegionScopedBlobStoreContext.class);

HttpRequest request = blobStoreContext.signerInRegion(regionCode)
        .signGetBlob(rackspaceCfContainer.getContainerName(),
                rackspaceCfDocHistory.getFileName(),
                RS_TEMP_URL_EXP_DUR);

String fileNameParam = "&filename=" + aliasFileName;

String fileNameURLFrag = null;
try {
    if (fileNameParam != null)
        fileNameURLFrag = UriUtils.encodeFragment(fileNameParam, "UTF-8");
} catch (UnsupportedEncodingException e) {
}

String url = request.getEndpoint().toString();

StringBuffer urlBuffer = new StringBuffer(url);
if (fileNameURLFrag != null)
    urlBuffer.append(fileNameURLFrag);

String finalURL = urlBuffer.toString();

这只是一种解决方法,而不是我一直在寻找的解决方案,但它仍然有效,我们可以解决问题。在这里,我只是通过编码的查询参数附加自动生成的 URL。

于 2014-08-19T14:45:31.303 回答
0

您可以在对象创建期间设置内容配置吗?这将允许所有后续对象提取(包括通过临时签名 URL)使用自定义文件名。

于 2014-08-18T07:08:13.763 回答
0

如果我理解正确,这不是在对象创建期间完成的,而是在请求对象时完成的。URL 参数只是导致服务覆盖浏览器理解的响应中的标头。实际文件名不会被修改。

具体下 http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html

请参阅 19.5.1 内容处置

于 2014-08-18T13:38:28.693 回答