2012-07-18 141 views
0

無論何時我們從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

回答

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

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

0

您將不得不更改服務於該文件的url中的文件名。您可以使用諸如urlRewriteFilter(https://code.google.com/p/urlrewritefilter/)之類的內容來重寫網址以允許您仍然使用「serve」servlet,但是將它們從Servlet中移出的方式更改爲無論你想要他們是什麼。

+0

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

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); 
相關問題