mysql - 如何使用 Servlet 和 AJAX 下载 MySQL 的 BLOB?

标签 mysql ajax servlets blob

我正在使用 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/

相关文章:

javascript - 如何使用当前数据提交 jQuery 表单的克隆?

Java使用byte[]下载文件

java - servlet 的 init() 方法有什么用?

mysql - 级联删除具有非级联外键的行

php - MySQL -- fatal error : Call to a member function bind_param() on a non-object

c# - 在 ASP.NET 中对 Ajax jQuery 调用中的 bool 值进行操作

javascript - 我的 AJAX 请求对象没有正确解析 URL 的协议(protocol)部分

java - 如何为 request.getRequestDispatcher() 指定 .JSP 文件的路径?

php - 将 PHP 数组作为文本插入 MySQL 数据库

mysql - mysql 表中的当前时间戳字段不会自动更新