使用文件名下载Blobstore的Blobstore



文件存储在appengine blobstore中。我有一个servlet处理程序,可以允许用户下载该文件。我用BlobStoreservice来做到这一点。

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

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

它可以很好地工作。下载文件的文件名来自servlet映射。

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

您需要在响应中添加" 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 );

最新更新