2
我正在使用一个servlet来访问MySQL数据。我已经有了将文件从servlet发送到响应的代码。如何使用Servlets和AJAX下载MySQL的BLOB?
我不知道我是如何被赶上它与JavaScript,因为我不是通过提交进行此调用。我不想重新加载洞页面。
我试着做一个window.open到servlet,通过URL发送所有参数,但它只打开一个空白页面。
我正在使用一个servlet来访问MySQL数据。我已经有了将文件从servlet发送到响应的代码。如何使用Servlets和AJAX下载MySQL的BLOB?
我不知道我是如何被赶上它与JavaScript,因为我不是通过提交进行此调用。我不想重新加载洞页面。
我试着做一个window.open到servlet,通过URL发送所有参数,但它只打开一个空白页面。
好了,要下载的文件,我只是查询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();
}
不要忘记`fl.free()` – 2011-07-28 07:34:20
你能张贴你的JavaScript代码,这样我可以看到你的错误可能是什么? – 2010-12-08 20:41:18