【发布时间】:2012-03-13 21:41:15
【问题描述】:
1)我想下载一个作为 blob 存储在 oracle 数据库中的 pdf 文件。但我得到 0 kb 文件。 我以前没有这样做过。所以请帮忙 在按钮上单击一个 servlet 调用另一个 servlet,该 servlet 完成下载工作。 这是我为下载文件而编写的代码。
protected void processRequest(HttpServletRequest request, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html;charset=UTF-8");
try {
OutputStream outStream = resp.getOutputStream();
List file=(List)request.getAttribute("file");
String fileName=null;
byte[] fileBytes=null;
for (int i=0;i<file.size();i++)
{
Map objec=(Map) file.get(i);
fileName=(String)objec.get("fileName");
fileBytes=(byte[])objec.get("fileBytes");
}
String fileType = fileName.substring(fileName.indexOf(".")+1,fileName.length());
if (fileType.trim().equalsIgnoreCase("pdf"))
{
resp.setContentType( "application/pdf" );
}
resp.setHeader("Content-Disposition","attachment; filename=\""+fileName+"\"");
resp.setHeader("cache-control", "must-revalidate");
System.out.println(fileBytes);
} finally {
// out.close();
}
}
ServletOutputStream outs = response.getOutputStream();
outs.write(fileBytes);
outs.flush();
outs.close();
请告诉我哪里出错了。如何下载完整的pdf文件?
2) 假设这个 pdf 文件是客户详细信息的完整报告。假设它有 300 页。并且每个客户的页码都是已知的。例如客户安东尼,他在此 pdf 中的第 4 页和第 5 页。我只想下载包含这 2 个页面的文件。我怎样才能完成这项任务?
更新: jtahlborn 解决了我的第一个非常愚蠢的问题......只需添加以下几行
resp.getOutputStream().write(fileBytes);
resp.getOutputStream().flush();
resp.getOutputStream().close();
所以我终于成功了。现在请一些人帮助我解决我的第二个问题。我想下载从 pdf 中知道页码的页面并保存为单独的 pdf 文件。其实这就是我要下载的pdf。不是第一个pdf。我这样做是为了学习下载 blob 文件。
【问题讨论】:
-
将您的第二个问题作为一个单独的问题提出。 Stack Overflow 是一个提供问题答案的平台。但是识别正确答案的唯一方法是每个线程都有一个问题。