【问题标题】:Rackspace cloudfiles generate temp URL with overriding file name in Java?Rackspace cloudfiles在Java中生成带有覆盖文件名的临时URL?
【发布时间】:2014-08-17 02:34:42
【问题描述】:

我正在使用 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 中找到任何方法来实现相同的目标,有人可以帮我吗?

【问题讨论】:

    标签: rackspace-cloud jclouds rackspace-cloudfiles


    【解决方案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。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我不认为我们可以从头开始设置内容配置
      【解决方案3】:

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

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

      参见 19.5.1 内容处置

      【讨论】:

      • 我正在查看的只是在客户端(浏览器)端以指定名称保存文件,这可以从服务器端进行。
      猜你喜欢
      • 1970-01-01
      • 2013-11-06
      • 1970-01-01
      • 1970-01-01
      • 2013-07-18
      • 1970-01-01
      • 2018-07-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多