从GAE Blobstore服务文件

问题描述:

无论何时我们从Blobstore API提供文件,我都会多次遇到此问题。 它也总是下载:从GAE Blobstore服务文件

serve.fileNameExtention

是那里,我们可以提供或下载与我们保存它的文件名的文件的任何可能的方式。

即someName.docx

如果可能的话,请告诉我该怎么做,因为我已经搜查了互联网,但我无法发现它的任何解决方案。

+0

我寻觅它遍布那么只有我问这个。 https://developers.google.com/appengine/docs/java/blobstore/overview#Serving_a_Blob 无处不在我只有这个解决方案。 – 2012-07-18 14:08:47

建立得头:

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

非常感谢您的解决方案先生.. !!! – 2012-07-18 14:21:38

您将不得不更改服务于该文件的url中的文件名。您可以使用诸如urlRewriteFilter(https://code.google.com/p/urlrewritefilter/)之类的内容来重写网址以允许您仍然使用“serve”servlet,但是将它们从Servlet中移出的方式更改为无论你想要他们是什么。

+0

那么先生,serve方法只接受blobKey,所以我们不能对文件的名称做任何事情。 – 2012-07-18 14:18:23

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