sharky的點滴積累

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            56 隨筆 :: 104 文章 :: 10 評論 :: 0 Trackbacks
          圖片存儲的字段是BLOB,圖片先上傳至服務(wù)器目錄,再存入ORACLE,此時大小超過  
          6K時會出錯。  
           
           錯誤信息如下:  
          Exception:  java.sql.SQLException:  Io  異常:  End  of  TNS  data  channel。  
           煩死了。  
          ---------------------------------------------------------------  
           
          其實很方便的,你寫個刪除文件的方法,從數(shù)據(jù)庫讀出文件名然后刪掉,也很方便  
          ---------------------------------------------------------------  
           
          我沒用jspsmart,直接上傳的:(  
          你可以參考!測試通過。  
           
          第一步:建立數(shù)據(jù)庫  
          create  table  test_img(id  number(4),name  varchar(20),img  long  raw);  
           
          第二步:(NewImg.html)  
           
          <html><head><title>添加圖片</title></head>  
          <body>  
          添加圖片<br>  
          <form  method="post"  action="insertNews.jsp">  
          圖像ID:<input  name="id"  size="10">  
          <br>  
          選擇圖像:<input  type="file"  name="image">  
          <br>  
          <input  type="submit"  value="上傳"  name="submit"  size="25">  
          <input  type="reset"  value="清除"  name="clear"  size="25">  
          <br>  
          </form>  
          </body></html>  
           
          第三步:插入數(shù)據(jù)庫(InsertImg.jsp)  
           
          <%@  page  language="java"%>  
          <%@  page  contentType="text/html;charset=gb2312"  %>  
          <%@  page  import="java.util.*"  %>  
          <%@  page  import="java.sql.*"%>  
          <%@  page  import="java.text.*"%>
          <%@  page  import="java.io.*"%>  
           
          <%  
          Class.forName("oracle.jdbc.driver.OracleDriver");
          String  url="jdbc:oracle:thin:@lubin:1521:b2bdb";
          Connection  con=DriverManager.getConnection(url,"demo","demo");
           
          //插入數(shù)據(jù)庫  
          String  sql="insert  into  test_img  values  (?,?,?)";  
          //獲取傳值ID  
          String  id=request.getParameter("id");  
          //獲取image的路徑  
          String  kk=request.getParameter("image");  
          //轉(zhuǎn)換成file格式  
          File  filename=new  File(kk);  
           
          //將文件的長度讀出,并轉(zhuǎn)換成Long型  
          long  l1=filename.length();  
          int  l2=(int)l1;  
           
          //以流的格式賦值  
          FileInputStream  fis=new  FileInputStream(filename);  
           
          PreparedStatement  ps  =con.prepareStatement(sql);  
          ps.setString(1,id);  
          ps.setString(2,filename.getName());  
          ps.setBinaryStream(3,fis,l2);
          //ps.setBinaryStream(3,fis,fis.available());
          ps.executeUpdate();  
          //ps.execute();
          ps.close();  
          fis.close();  
          out.println("ok!!!");  
          %>  
           
          第四步:顯示圖片(ShowImg.jsp)  
           
          <%@  page  language="java"  import="java.sql.*"%>
          <%@  page  import="java.io.*"%>
          <%@  page  contentType="text/html;charset=gb2312"%>  
           
          <%
          Class.forName("oracle.jdbc.driver.OracleDriver");
          String  url="jdbc:oracle:thin:@lubin:1521:b2bdb";
          String  image_id  =  (String)  request.getParameter("ID");  
           
          Connection  con=DriverManager.getConnection(url,"demo","demo");
          PreparedStatement  sql=con.prepareStatement("select  *  from  test_img  WHERE  id  =  "  +  image_id);
          ResultSet  rs  =  sql.executeQuery();
           
          rs.next();
          //輸入img字段內(nèi)容到in  
          InputStream  in  =  rs.getBinaryStream("img");
           
          //以下可是任何處理,比如向頁面輸出:
           
          response.reset();
          //此處的image/jpeg似乎與顯示的圖片格式無關(guān)  
          //因為我顯示jsp和gif都沒有錯誤。icech不是很懂,都是參考別人的。  
          response.setContentType("image/jpeg");
          byte[]  b  =  new  byte[1024];
          int  len;
          while((len=in.read(b))  >0)
          response.getOutputStream().write(b,0,len);
           
          in.close();
          rs.close();
          %>  
           

          補(bǔ)充:應(yīng)該采用jspsmartupload才可以實現(xiàn)。
          posted on 2005-11-12 12:08 sharky的點滴積累 閱讀(473) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 西充县| 修水县| 峡江县| 丽江市| 阳山县| 永宁县| 新闻| 阳东县| 潮州市| 三原县| 绵竹市| 盐源县| 蓝山县| 浮梁县| 龙江县| 华池县| 仁寿县| 济南市| 桦川县| 宣威市| 黎川县| 萨嘎县| 福清市| 白河县| 永和县| 黄大仙区| 广饶县| 米林县| 五寨县| 廉江市| 亚东县| 容城县| 崇仁县| 会同县| 合阳县| 富民县| 什邡市| 灌阳县| 开平市| 永泰县| 通化县|