ЧаВО по материалам форума
Java на Исходниках.Ру

Составители: Angie, d_k
Редактор: d_k



Сервлет передачи двоичных файлов в броузер (пример изображения) (d_k)
Необходимо создать в БД таблицу test с полями id number, bl blob.
В данном примере используется Oracle.
Аналогичным образом можно из сервлета любые другие бинарные файлы.
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;
import oracle.sql.*;

public class ImageFileServlet extends HttpServlet
  {
  private static final String CONTENT_TYPE = "image/jpeg";
  private final String sql = "select bl from test where id=\'1\'";
  private final String DATABASE_URL = "Здесь URL базы данных";

  public void init(ServletConfig config) throws ServletException
    {
    super.init(config);
    }

  public void doGet(HttpServletRequest request, HttpServletResponse response) 
                                                throws ServletException, IOException
    {
    response.setContentType(CONTENT_TYPE);
    response.addHeader("Content-Disposition", "attachment; filename=img.jpg");
    OutputStream out = response.getOutputStream();

    try{
      Class.forName("oracle.jdbc.driver.OracleDriver");
      Connection conn = DriverManager.getConnection(DATABASE_URL);
      Statement st = conn.createStatement();
      ResultSet rs = st.executeQuery(sql);
      rs.next();
      BLOB blob = (BLOB) rs.getBlob(1);
      InputStream is = blob.binaryStreamValue();

      int i;
      while((i=is.read())!=-1)
        out.write((byte) i);
      out.flush();
      rs.close();
      st.close();
      conn.close();
    } catch (Exception e){e.printStackTrace();}
  out.close();
  }
}


Содержание