2010-11-29 2 views
2

私はサーブレットを使用してMySQLデータにアクセスしています。私はすでにサーブレットから応答にファイルを送信するためのコードを持っています。サーブレットとAJAXを使用してMySQLのBLOBをダウンロードするにはどうすればよいですか?

私が知らないことは、私がsubmitによってこの呼び出しをしていないので、javascriptでそれをキャッチする方法です。私は穴のページをリロードしたくありません。

サーブレットにwindow.openを作成して、すべてのパラメータをURLで送信しようとしましたが、空白のページのみが開きます。

+0

は、あなたのjavascriptのコードを投稿してもらえますか? –

答えて

0

私はちょうどBLOBファイルを照会してから、ファイルをダウンロードするには、[OK]:あなたの誤差があるかもしれないところ、私が見ることができるように

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()'を忘れないでください。 –

関連する問題