我将使用 Google 应用程序引擎 Blobstore 来存储我上传的文件。文件类型可以是任何类型(.txt、.pdf、.docx 等)我编写了以下 servlet 来下载 Google 应用引擎 Blobstore 中存储的文件。
public class Serve extends HttpServlet {
private BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
public void doGet(HttpServletRequest 请求,HttpServletResponse 资源)抛出 IOException {
BlobKey blobKey = new BlobKey(req.getParameter("blob-key"));
blobstoreService.serve(blobKey, res);
}
但每次我通过提供如下网址请求文件时, http://127.0.0.1:8888/serve?blob-key=DEHQ3U_2wtUdEL7XPI434Q文件下载很好。但没有文件扩展名。文件名始终为“服务”下载上传的文件是原文件名怎么办?谢谢,
我使用以下代码通过将 blob-key 作为字符串传递给我的 Serve.java 来提供 blob。使用原始文件名和原始扩展名下载文件。在 http://onjava.com/onjava/excerpt/jebp_3/index3.html 找到更详细的讨论
BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
BlobInfoFactory bi = new BlobInfoFactory();
BlobKey blobKey = new BlobKey(req.getParameter("blob-key"));
String fname = bi.loadBlobInfo(blobKey).getFilename();
res.setContentType("application/x-download");
res.setHeader("Content-Disposition", "attachment; filename=" + fname);
blobstoreService.serve(blobKey, res);
我是一名优秀的程序员,十分优秀!