国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
JSP頁面實(shí)現(xiàn)圖片、PDF字節(jié)流的顯示,Word、Excel、Zip字節(jié)流的下載功能的實(shí)現(xiàn)

項(xiàng)目中需要把存儲(chǔ)在數(shù)據(jù)庫Blob字段中字節(jié)流進(jìn)行以下相關(guān)的操作:

1.圖片文件直接在頁面中顯示;

2.Doc,PDF等文檔提示用戶下載。

這個(gè)需求需要解決2個(gè)問題,第一個(gè)問題,從數(shù)據(jù)庫中讀取Blob字段;第二個(gè)問題,根據(jù)文件的類型,圖片文件直接顯示,其他文件提供下載功能。

在這里讀取BLob字段的數(shù)據(jù)不是什么難點(diǎn),我們知道用Blob字段是保存的二進(jìn)制流文件,用Byte[]來保存即可。代碼如下:

  1. //獲得數(shù)據(jù)庫連接     
  2.      Connection con = ConnectionFactory.getConnection();     
  3.      con.setAutoCommit(false);     
  4.      Statement st = con.createStatement();        
  5.      ResultSet rs = st.executeQuery("select BLOBATTR from TESTBLOB where ID=1");     
  6.      if (rs.next())     
  7.      {     
  8.          java.sql.Blob blob = rs.getBlob("BLOBATTR");     
  9.          InputStream inStream = blob.getBinaryStream();     
  10.          //data是讀出并需要返回的數(shù)據(jù),類型是byte[]     
  11.          data = new byte[input.available()];     
  12.          inStream.read(data);     
  13.          inStream.close();     
  14.      }     
  15.      inStream.close();     
  16.      con.commit();     
  17.      con.close();   

對(duì)于如何按需求處理二進(jìn)制流文件,我的實(shí)現(xiàn)方式如下:

  1.     static {  
  2.     MIME = new Hashtable();  
  3.     MIME.put("jpeg", "image/jpeg");  
  4.     MIME.put("jpg", "image/jpeg");  
  5.     MIME.put("jfif", "image/jpeg");  
  6.     MIME.put("jfif-tbnl", "image/jpeg");  
  7.     MIME.put("jpe", "image/jpeg");  
  8.     MIME.put("jfif", "image/jpeg");  
  9.     MIME.put("tiff", "image/tiff");  
  10.     MIME.put("tif", "image/tiff");  
  11.     MIME.put("gif", "image/gif");  
  12.     MIME.put("xls", "application/x-msexcel");  
  13.     MIME.put("doc", "application/msword");  
  14.     MIME.put("ppt", "application/x-mspowerpoint");  
  15.     MIME.put("zip", "application/x-zip-compressed");  
  16.     MIME.put("pdf", "application/pdf");  
  17. }  
  18.   
  19. /**  
  20.  * 對(duì)字節(jié)流進(jìn)行處理,圖片顯示,其他提供下載  
  21.  * @param fileName 文件名稱  
  22.  * @param bytes[] 文件二進(jìn)制流  
  23.  * @param down 是否下載  
  24.  *   
  25.  * @return  
  26.  */  
  27. public static void StreamOper(HttpServletResponse response, String fileName, byte bytes[], boolean down)  
  28.     throws IOException {  
  29.         int index = 0;  
  30.         String ext = "";  
  31.         if ((index = fileName.indexOf('.')) > 0)  
  32.             ext = fileName.substring(index + 1);  
  33.         //通過文件名的后綴判斷文件的格式  
  34.         String mime = (String) MIME.get(ext);  
  35.         if (mime == null)  
  36.             mime = "application/x-msdownload";  
  37.   
  38.                        response.setContentType(mime);  
  39.         //是否需要提供下載  
  40.         if (down)  
  41.             response.setHeader("Content-Disposition", "attachment; filename=" + fileName);  
  42.         OutputStream outStream = response.getOutputStream();  
  43.         outStream.write(bytes, 0, bytes.length);  
  44.         outStream.flush();  
  45.         outStream.close();  
  46.     }  


在前臺(tái)的JSP頁面中直接調(diào)用StreamOper方法即可。圖片和PDF二進(jìn)制流都可以在JSP中顯示,Doc,Excel等流直接提示用戶下載。

  1. <%  
  2.   
  3.     FileDownloader.StreamOper(response, filename, pic, false);  
  4.       
  5. %>  

這樣對(duì)于圖片,直接在JSP中顯示,對(duì)于其他問題提示用戶下載。

最后附上一段如何讀取文件轉(zhuǎn)換成二進(jìn)制流程代碼,供大家參考:

  1. ///讀取文件字節(jié)流  
  2. public static byte[] readerFileStream(String fileName)  
  3.         throws IOException {  
  4.     File f = new File(fileName);  
  5.     int length = (int)f.length();  
  6.       
  7.     byte[] buff = new byte[length];  
  8.       
  9.     BufferedInputStream bis = null;  
  10.       
  11.   
  12.     bis = new BufferedInputStream(new FileInputStream(fileName));  
  13.     int bytesRead;  
  14.     while(-1 != (bytesRead = bis.read(buff, 0, buff.length))) {  
  15.     }  
  16.       
  17.     return buff;  
  18. }  








本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
jsp文件上傳、下載
servlet 和JSP的上傳下載
如何在網(wǎng)頁中如何下載一個(gè)JPG(或pdf)文件,而不在瀏覽器中打開?
Content-dispostion
pageEncoding和charset區(qū)別
jsp字符編碼
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服