<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=193654&amp;view=findpost&amp;p=1623252</guid>
        <pubDate>Tue, 03 Jul 2007 21:20:48 +0000</pubDate>
        <title>Сервлет передачи двоичных файлов в броузер (пример изображения)</title>
        <link>https://forum.sources.ru/index.php?showtopic=193654&amp;view=findpost&amp;p=1623252</link>
        <description><![CDATA[wind: Необходимо создать в БД таблицу test с полями id number, bl blob.<br>
В данном примере используется Oracle.<br>
Аналогичным образом можно из сервлета любые другие бинарные файлы.<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">import javax.servlet.*;</div><div class="code_line">import javax.servlet.http.*;</div><div class="code_line">import java.io.*;</div><div class="code_line">import java.sql.*;</div><div class="code_line">import oracle.sql.*;</div><div class="code_line">&nbsp;</div><div class="code_line">public class ImageFileServlet extends HttpServlet</div><div class="code_line">&nbsp;&nbsp;{</div><div class="code_line">&nbsp;&nbsp;private static final String CONTENT_TYPE = &quot;image/jpeg&quot;;</div><div class="code_line">&nbsp;&nbsp;private final String sql = &quot;select bl from test where id=\&#39;1\&#39;&quot;;</div><div class="code_line">&nbsp;&nbsp;private final String DATABASE_URL = &quot;Здесь URL базы данных&quot;;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;public void init(ServletConfig config) throws ServletException</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;super.init(config);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;public void doGet(HttpServletRequest request, HttpServletResponse response) </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;throws ServletException, IOException</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp;response.setContentType(CONTENT_TYPE);</div><div class="code_line">&nbsp;&nbsp; &nbsp;response.addHeader(&quot;Content-Disposition&quot;, &quot;attachment; filename=img.jpg&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;OutputStream out = response.getOutputStream();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;try{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Class.forName(&quot;oracle.jdbc.driver.OracleDriver&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Connection conn = DriverManager.getConnection(DATABASE_URL);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;Statement st = conn.createStatement();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;ResultSet rs = st.executeQuery(sql);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;rs.next();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;BLOB blob = (BLOB) rs.getBlob(1);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;InputStream is = blob.binaryStreamValue();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;int i;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;while((i=is.read())!=-1)</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;out.write((byte) i);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;out.flush();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;rs.close();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;st.close();</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp;conn.close();</div><div class="code_line">&nbsp;&nbsp; &nbsp;} catch (Exception e){e.printStackTrace();}</div><div class="code_line">&nbsp;&nbsp;out.close();</div><div class="code_line">&nbsp;&nbsp;}</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
[Автор - <a class='tag-url' href='http://forum.sources.ru/index.php?showuser=1701' target='_blank'>d_k</a>]]]></description>
        <author>wind</author>
        <category>Java FAQ</category>
      </item>
	
      </channel>
      </rss>
	