App Engine Blobstore のドキュメントによると、BlobStore の各エントリに対して DataStore に BlobInfo エントリがあるはずです。次に、以下のコードで blobInfo が null になっているのはなぜですか?
ノート:
- BlobInfo コードを削除すると、サーブレットは必要に応じてリソースを返します (ただし、ファイル名はありません)。
- 簡潔にするために、例外とパラメーターの処理を削除しました
私はあなたの助けにとても感謝しています.
public class GetResourceServlet extends HttpServlet {
private BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
private BlobInfoFactory infoFactory = new BlobInfoFactory();
public void doGet ( HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String blobKeyStr = request.getParameter("blob-key");
BlobKey blobKey = new BlobKey(blobKeyStr);
BlobInfo info = infoFactory.loadBlobInfo(blobKey); // returns null !?
String fname = info.getFilename();
response.addHeader("content-disposition", "attachment; filename=" + fname);
blobstoreService.serve(blobKey, response);
}