Rackspace cloudfiles用Java重写文件名生成临时URL



我正在使用rackspace cloudfiles java api。到目前为止,我已经设法编写代码生成临时URL下载文件,与java api由rackspace使用这里提供的示例。

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中找到任何方法来实现相同,有人能帮助我吗?

好了,这就是我以

结尾的地方
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。

可以在创建对象时设置内容配置吗?这将允许所有后续对象获取,包括通过临时签名url,使用自定义文件名。

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

明确下http://www.w3.org/Protocols/rfc2616/rfc2616-sec19.html

参见19.5.1内容配置

相关内容

  • 没有找到相关文章

最新更新