从GAE Blobstore提供文件

时间:2012-07-18 14:01:45

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

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

serve.fileNameExtention

我们是否可以通过我们保存的名称来提供或下载文件。

即。 someName.docx

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

3 个答案:

答案 0 :(得分:3)

将其设置在标题中:

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);
    }

答案 1 :(得分:1)

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);

答案 2 :(得分:0)

您必须更改要为其提供文件的网址中的文件名。您可以使用类似urlRewriteFilter(https://code.google.com/p/urlrewritefilter/)的内容来重写网址以允许您仍然使用“服务”servlet,但是在从servlet转出的路径中更改网址无论你想要什么。