現在、ユーザーはブロブストアを介してコンテンツをアップロードして後でダウンロードできるウェブアプリを構築しています。GAEのブロブを処理する際の問題
ただし、ダウンロードを処理するサーブレットはBlobServiceServlet と呼ばれ、ユーザーがblobをダウンロードするたびにファイル名は「BlobServiceServlet」に変更され、拡張子も.binに変更されることがあります。誰もがこの問題を解決する方法を知っていますか?
現在、ユーザーはブロブストアを介してコンテンツをアップロードして後でダウンロードできるウェブアプリを構築しています。GAEのブロブを処理する際の問題
ただし、ダウンロードを処理するサーブレットはBlobServiceServlet と呼ばれ、ユーザーがblobをダウンロードするたびにファイル名は「BlobServiceServlet」に変更され、拡張子も.binに変更されることがあります。誰もがこの問題を解決する方法を知っていますか?
応答に「Content-disposition」ヘッダーを追加します。
たとえば、http://en.wikipedia.org/wiki/MIME#Content-Dispositionを参照してください。
例えば、ハンドラで、
self.response.headers['Content-Disposition'] = 'attachment; filename=foo.doc'
だけ追加情報。 これは、ブラウザがファイルサイズを知らせるためのコードです:あなたは、サイズが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
おっとは、イム申し訳ありませんが、私はかなりそれを理解しません。私はこれに慣れていません。コード例を入れておきますか? – fernandohur
誰かがjavaを使用している場合は、Daveのおかげでそれを理解しました。あなたは単にresponse.addHeader( "Content-Disposition"、 "filename =" + YOUR_FILE_NAME);を入れなければなりません。 – fernandohur