java以Blob形式存储,读取图片并在jsp页面显示图片流
生活随笔
收集整理的這篇文章主要介紹了
java以Blob形式存储,读取图片并在jsp页面显示图片流
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
2019獨角獸企業重金招聘Python工程師標準>>>
????? 廢話少說代碼伺候:
封裝好的ImageUtil類:目的讀取本地的圖片文件并存入數據庫,然后讀出數據庫中以Blob形式存儲的圖片保存到指定目錄。
?
1 package org.blog.util;2 import java.io.File;
3 import java.io.FileInputStream;
4 import java.io.FileNotFoundException;
5 import java.io.FileOutputStream;
6 import java.io.IOException;
7 ? public class ImageUtil {
8 private static File file = null ;
9 /* *
10 * 讀取圖像的二進制流
11 *
12 * @param infile
13 * @return
14 */
15 public static FileInputStream getByteImage(String infile) {
16 FileInputStream inputImage = null ;
17 file = new File(infile);
18 try {
19 inputImage = new FileInputStream(file);
20 } catch (FileNotFoundException e) {
21 e.printStackTrace();
22 }
23 return inputImage;
24 }
25 /* *
26 * 輸出圖片
27 * @param inputStream
28 * @param path
29 */
30 public static void readBlob(FileInputStream inputStream, String path) {
31 try {
32 FileOutputStream fileOutputStream = new FileOutputStream(path);
33 byte [] buf = new byte [ 1024 ];
34 int len = 0 ;
35 while ((len = inputStream.read(buf)) != - 1 ) {
36 fileOutputStream.write(buf, 0 , len); // 寫
37 ? }
38 inputStream.close();
39 fileOutputStream.close();
40 } catch (FileNotFoundException e) {
41 e.printStackTrace();
42 } catch (IOException e) {
43 e.printStackTrace();
44 }
45 }
46 }
從數據庫中讀出二進制流顯示到jsp頁面:
servlet源碼:
?
1 package servlet;2 import java.io.ByteArrayInputStream;
3 import java.io.FileInputStream;
4 import java.io.IOException;
5 import java.io.InputStream;
6 import java.io.OutputStream;
7 import java.io.PrintWriter;
8 import java.sql.Blob;
9 import javax.servlet.ServletException;
10 import javax.servlet.ServletOutputStream;
11 import javax.servlet.http.HttpServlet;
12 import javax.servlet.http.HttpServletRequest;
13 import javax.servlet.http.HttpServletResponse;
14 import org.blog.util.ImageUtil;
15 import org.hibernate.Hibernate;
16 ? public class Image extends HttpServlet {
17 private static final long serialVersionUID = 1L ;
18 @Override
19 protected void doGet(HttpServletRequest req, HttpServletResponse resp)
20 throws ServletException, IOException {
21 this .doPost(req, resp);
22 }
23 @Override
24 protected void doPost(HttpServletRequest req, HttpServletResponse resp)
25 throws ServletException, IOException {
26 try {
27 FileInputStream in = ImageUtil.getByteImage( " D:\\me.jpg " );
28 Blob blob = Hibernate.createBlob( in );
29 InputStream inputStream = blob.getBinaryStream(); // IO流
30 int length = ( int ) blob.length();
31 byte [] b = new byte [length];
32 inputStream.read(b, 0 , length);
33 PrintWriter out = resp.getWriter();
34 InputStream is = new ByteArrayInputStream(b);
35 int a = is .read();
36 while (a != - 1 ) {
37 out .print(( char ) a);
38 a = is .read();
39 }
40 out .flush();
41 out .close();
42 /* OutputStream outputStream = resp.getOutputStream();// 從response中獲取getOutputStream
43 outputStream.write(b);// 寫
44 inputStream.close();
45 outputStream.close(); */
46 } catch (Exception e) {
47 System. out .println( " error " );
48 }
49 }
50 }
jsp源碼:
1 <% @ page language = " java " import = " java.util.* " pageEncoding = " UTF-8 " %>
2 <%
3 String path = request.getContextPath();
4 String basePath = request.getScheme() + " :// " + request.getServerName() + " : " + request.getServerPort() + path + " / " ;
5 %>
6 <! DOCTYPE HTML PUBLIC " -//W3C//DTD HTML 4.01 Transitional//EN " >
7 < html >
8 < head >
9 < base href = " <%=basePath%> " >
10
11 < title > My JSP ' image.jsp ' starting page </ title >
12
13 < meta http - equiv = " pragma " content = " no-cache " >
14 < meta http - equiv = " cache-control " content = " no-cache " >
15 < meta http - equiv = " expires " content = " 0 " >
16 < meta http - equiv = " keywords " content = " keyword1,keyword2,keyword3 " >
17 < meta http - equiv = " description " content = " This is my page " >
18 <!--
19 < link rel = " stylesheet " type = " text/css " href = " styles.css " mce_href = " styles.css " >
20 -->
21 </ head >
22
23 < body >
24 < div style = " border: solid red ; " mce_style = " border: solid red ; " > < img src = " image.do " mce_src = " image.do " ></ div >
25 </ body >
26 </ html >
轉載于:https://my.oschina.net/u/197668/blog/361218
總結
以上是生活随笔為你收集整理的java以Blob形式存储,读取图片并在jsp页面显示图片流的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 分享一个点赞超过100的漂亮ASP.NE
- 下一篇: 添加CSS的四种方式