1

文件存储在 Appengine Blobstore 中。我有一个 servlet 处理程序来允许用户下载文件。我使用 BlobStoreService 来做到这一点。

在我的 servlet 中,我有以下内容:

BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
BlobKey blobKey = new BlobKey( "SOME_BLOB_KEY_HERE" );
blobstoreService.serve(blobKey, res);

它完美地工作。下载文件的文件名来自 servlet 映射。

如何在我的 servlet 中设置文件的文件名?

4

1 回答 1

6

您需要在响应中添加“Content-Disposition”标头:

BlobstoreServiceFactory.getBlobstoreService().serve(blobKey, resp);
BlobInfo blobInfo = new BlobInfoFactory().loadBlobInfo(blobKey);

String encodedFilename = URLEncoder.encode(blobInfo.getFilename(), "utf-8");
encodedFilename.replaceAll("\\+", "%20");
resp.setContentType("application/octet-stream");

resp.addHeader("Content-Disposition", "attachment; filename*=utf-8''" + encodedFilename );
于 2012-12-20T02:22:38.543 回答