2010-11-29 63 views
2

我正在使用一个servlet来访问MySQL数据。我已经有了将文件从servlet发送到响应的代码。如何使用Servlets和AJAX下载MySQL的BLOB?

我不知道我是如何被赶上它与JavaScript,因为我不是通过提交进行此调用。我不想重新加载洞页面。

我试着做一个window.open到servlet,通过URL发送所有参数,但它只打开一个空白页面。

+0

你能张贴你的JavaScript代码,这样我可以看到你的错误可能是什么? – 2010-12-08 20:41:18

回答

0

好了,要下载的文件,我只是查询BLOB文件,然后:

try{ 
    ServletOutputStream output = response.getOutputStream(); 
    stmt = (Statement) c.createStatement(); 
    rs = stmt.executeQuery(query); 
    if (rs.next()) { 
    fl = (Blob) rs.getBlob(1); 
    } else { 
     System.out.println("No se pudo descargar el archivo"); 
    } 

    InputStream in = fl.getBinaryStream(); 
    int length = (int) fl.length(); 

    response.reset(); 
    //response.setContentType("multipart/mixed"); 
    //if(rs.getString(3).toLowerCase().equals("mp3") || rs.getString(3).toLowerCase().equals("mpeg")) 
     response.setContentType(getMime(rs.getString(2))); 
    response.setHeader("Content-Length: ",Integer.toString(length)); 
    response.setHeader("Content-disposition","attachment; filename=" + rs.getString(2)); 

    byte[] buf = new byte[1024]; 

while ((length = in.read(buf)) > 0){ 
    output.write(buf, 0, length); 
} 
    output.close(); 
    in.close(); 
    rs.close(); 
     }catch(Exception e){ 
      e.printStackTrace(); 
     } 
+1

不要忘记`fl.free()` – 2011-07-28 07:34:20