Как я могу скачать BLOB-файл MySQL с помощью сервлетов и AJAX? - PullRequest
2 голосов
/ 29 ноября 2010

Я использую сервлет для доступа к данным MySQL. У меня уже есть код для отправки файла из сервлета в ответ.

Чего я не знаю, так это того, как я должен поймать его с помощью javascript, потому что я не делаю этот вызов путем отправки. Я не хочу перезагружать дырочку.

Я попытался сделать window.open сервлету, отправив все параметры по URL, но он открывает только пустую страницу.

1 Ответ

0 голосов
/ 28 июля 2011

Хорошо, чтобы скачать файл, я просто запрашиваю файл 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();
        }
...