【问题标题】:Serve File from GAE Blobstore从 GAE Blobstore 提供文件
【发布时间】:2012-07-18 14:01:45
【问题描述】:

每当我们从 Blobstore API 提供文件时,我都曾多次遇到过这个问题。 它总是被下载为:

serve.fileNameExtention

是否有任何可能的方式可以使用我们保存的名称提供或下载文件。

即someName.docx

如果可能,请告诉我该怎么做,因为我已经在互联网上搜索过,但我找不到任何解决方案。

【问题讨论】:

标签: java google-app-engine google-cloud-datastore blobstore


【解决方案1】:

在标题中设置:

public void doGet(HttpServletRequest req, HttpServletResponse res)
    throws IOException {
        BlobKey blobKey = new BlobKey(req.getParameter("blob-key")); //example
        String filename = "someName.docx";
        res.setHeader("Content-Disposition", "attachment; filename=\"" +fileName +\"");

        blobstoreService.serve(blobKey, res);
    }

【讨论】:

    【解决方案2】:
    BlobKey blobKey = new BlobKey(key);                
    
    BlobInfo blobInfo =  new BlobInfoFactory().loadBlobInfo(blobKey);
    // set response header
    response.setContentType(blobInfo.getContentType());
    response.setHeader("Content-Disposition", "filename=" + blobInfo.getFilename());
    
    // serve blob
    blobService.serve(blobKey, response);
    

    【讨论】:

      【解决方案3】:

      您必须更改提供文件的 url 中的文件名。您可以使用 urlRewriteFilter (https://code.google.com/p/urlrewritefilter/) 之类的东西来重写 url 以允许您仍然使用“服务”servlet,但在离开 servlet 时将 url 更改为无论你想让他们成为什么样的人。

      【讨论】:

      • 先生,serve 方法只接受 blobKey,所以我们不能对文件名做任何事情。
      猜你喜欢
      • 2013-05-04
      • 1970-01-01
      • 2012-10-17
      • 1970-01-01
      • 2014-10-10
      • 2013-02-23
      • 1970-01-01
      • 2011-12-25
      • 2013-11-07
      相关资源
      最近更新 更多