На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела Java FAQ
1. Данный раздел предназначен только для публикации готовых статей, с вопросами обращайтесь в соответствующие подразделы.
2. Все вопросы, связанные с ошибками или неточностями в представленных материалах направляйте модераторам персональным сообщением.
3. Все темы и сообщения в разделе премодерируются. Любое сообщение или тема будут доступны остальным участникам после одобрения модераторами.
Модераторы: dark_barker, wind
  
> Сервлет передачи двоичных файлов в броузер (пример изображения) , статья из старых Java FAQ
    Необходимо создать в БД таблицу test с полями id number, bl blob.
    В данном примере используется Oracle.
    Аналогичным образом можно из сервлета любые другие бинарные файлы.

    ExpandedWrap disabled
      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();
        }
      }


    [Автор - d_k]
    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
    0 пользователей:


    Рейтинг@Mail.ru
    [ Script execution time: 0,0198 ]   [ 15 queries used ]   [ Generated: 28.03.24, 13:51 GMT ]