Rackspace cloudfiles 在 Java 中使用覆盖文件名生成临时 URL?

问题描述 投票:0回答:3

我正在使用rackspace cloudfiles的java api。到目前为止,我已经成功地写出了生成临时URL来下载文件的代码,用rackspace的java api使用这里提供的例子。

https:/github.comjcloudsjclouds-examplesblobmasterrackspacesrcmainjavaorgjcloudsexamplesrackspacecloudfilesGenerateTempURL.java。

我在rackspace的api文档中也看到了,它证实了我有可能在下载文件时使用临时URL覆盖文件名。

http:/docs.rackspace.comfilesapiv1cf-devguidecontentTempURL_File_Name_Overrides-d1e213.html。

不幸的是,我无法在这些java api中找到任何方法来实现同样的目的,有人能帮助我吗?

rackspace-cloud jclouds rackspace-cloudfiles
3个回答
0
投票

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


0
投票

如果我理解正确的话,这不是在创建对象期间完成的,而是在请求对象时才完成的。URL param只是让服务在响应中覆盖一个浏览器能够理解的头。实际的文件名不会被修改。

具体来说,在http:/www.w3.orgProtocolsrfc2616rfc2616-sec19.html

见19.5.1内容--处置。


0
投票

好吧,这是我结束了它与

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后面加上一个编码的查询参数。

© www.soinside.com 2019 - 2024. All rights reserved.