我正在使用 servlet 访问 MySQL 数据。我已经有了将文件从 servlet 发送到响应的代码。
我不知道我应该如何使用 javascript 捕获它,因为我没有通过提交进行调用。我不想重新加载漏洞页面。
我尝试为 servlet 创建一个 window.open,通过 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();
}
关于mysql - 如何使用 Servlet 和 AJAX 下载 MySQL 的 BLOB?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4301419/