Java 下载blob pdf文件后没有数据

Java 下载blob pdf文件后没有数据,java,oracle,servlets,blob,Java,Oracle,Servlets,Blob,1) 我想下载一个pdf文件,它作为blob存储在oracle数据库中。但我得到了0 kb的文件。 我以前从未这样做过。所以请帮忙 单击按钮,一个servlet调用另一个servlet,该servlet负责下载。 这是我为下载该文件而编写的代码 protected void processRequest(HttpServletRequest request, HttpServletResponse resp) throws ServletException, IOException {

1) 我想下载一个pdf文件,它作为blob存储在oracle数据库中。但我得到了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中下载已知页码的页面,并另存为一个单独的pdf文件。实际上,这就是我想下载的pdf文件。不是第一个pdf。我这样做只是为了学习下载blob文件

1)您正在打印字节,而不是将它们放入响应中。e、 g.
resp.getOutputStream().write(fileBytes)

2) 您可能需要某种pdf解析/编辑库,它允许您分离pdf文件。或者,您可以使用一些独立的pdf编辑器预先将pdf分隔为每个客户的文件,并将它们单独存储在数据库中。

1)您打印出字节,而不是将它们放入响应中。e、 g.
resp.getOutputStream().write(fileBytes)


2) 您可能需要某种pdf解析/编辑库,它允许您分离pdf文件。或者,您可以使用一些独立的pdf编辑器预先将pdf分离到每个客户的文件中,并将它们单独存储在数据库中。

对不起……我忘记添加剩余的代码了。。。。ServletOutputStream outs=response.getOutputStream();outs.write(文件字节);out.flush();out.close();我已经编辑了主题并添加了打印文件的行..请检查..哦,是的,jtahlborn先生..第一个问题解决了…非常感谢…现在我担心第二个问题抱歉..我忘了添加剩余的代码。。。。ServletOutputStream outs=response.getOutputStream();outs.write(文件字节);out.flush();out.close();我已经编辑了主题并添加了我打印文件的行..请检查..哦,是的,jtahlborn先生..第一个问题解决了..非常感谢..现在我担心第二个问题将第二个问题作为单独的问题问。堆栈溢出是提供问题答案的平台。但是确定正确答案的唯一方法是每一条线索有一个问题。将第二个问题作为单独的问题提问。堆栈溢出是提供问题答案的平台。但是识别正确答案的唯一方法是每个线程有一个问题。
resp.getOutputStream().write(fileBytes);
resp.getOutputStream().flush();
resp.getOutputStream().close();