2011-09-17 9 views
4

現在、ユーザーはブロブストアを介してコンテンツをアップロードして後でダウンロードできるウェブアプリを構築しています。GAEのブロブを処理する際の問題

ただし、ダウンロードを処理するサーブレットはBlobServiceServlet と呼ばれ、ユーザーがblobをダウンロードするたびにファイル名は「BlobServiceServlet」に変更され、拡張子も.binに変更されることがあります。誰もがこの問題を解決する方法を知っていますか?

答えて

6

応答に「Content-disposition」ヘッダーを追加します。

たとえば、http://en.wikipedia.org/wiki/MIME#Content-Dispositionを参照してください。

例えば、ハンドラで、

self.response.headers['Content-Disposition'] = 'attachment; filename=foo.doc' 
+0

おっとは、イム申し訳ありませんが、私はかなりそれを理解しません。私はこれに慣れていません。コード例を入れておきますか? – fernandohur

+1

誰かがjavaを使用している場合は、Daveのおかげでそれを理解しました。あなたは単にresponse.addHeader( "Content-Disposition"、 "filename =" + YOUR_FILE_NAME);を入れなければなりません。 – fernandohur

4

だけ追加情報。 これは、ブラウザがファイルサイズを知らせるためのコードです:あなたは、サイズが1メガバイト以上のファイルがある場合は、ファイルサイズがブラウザに送信されていないことを

BlobInfoFactory blobInfoFactory = new BlobInfoFactory(DatastoreServiceFactory.getDatastoreService()); 
BlobInfo blobInfo = blobInfoFactory.loadBlobInfo(blobKey); 
resp.setContentLength(new Long(blobInfo.getSize()).intValue()); 
resp.setHeader("content-type", blobInfo.getContentType()); 
resp.setHeader("content-disposition", "attachment;filename=" + blobInfo.getFilename()); 
blobstoreService.serve(blobKey, resp); 

注意を。 GAEはブロブを一度に1MBずつ読み込み、レスポンスにファイルサイズのヘッダーを上書きします。

私はここにすべての情報を見つけました: http://www.mail-archive.com/[email protected]/msg29314.html