sharky的點(diǎn)滴積累

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            56 隨筆 :: 104 文章 :: 10 評(píng)論 :: 0 Trackbacks
          圖片存儲(chǔ)的字段是BLOB,圖片先上傳至服務(wù)器目錄,再存入ORACLE,此時(shí)大小超過(guò)  
          6K時(shí)會(huì)出錯(cuò)。  
           
           錯(cuò)誤信息如下:  
          Exception:  java.sql.SQLException:  Io  異常:  End  of  TNS  data  channel。  
           煩死了。  
          ---------------------------------------------------------------  
           
          其實(shí)很方便的,你寫(xiě)個(gè)刪除文件的方法,從數(shù)據(jù)庫(kù)讀出文件名然后刪掉,也很方便  
          ---------------------------------------------------------------  
           
          我沒(méi)用jspsmart,直接上傳的:(  
          你可以參考!測(cè)試通過(guò)。  
           
          第一步:建立數(shù)據(jù)庫(kù)  
          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ù)庫(kù)(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ù)庫(kù)  
          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);  
           
          //將文件的長(zhǎng)度讀出,并轉(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");
           
          //以下可是任何處理,比如向頁(yè)面輸出:
           
          response.reset();
          //此處的image/jpeg似乎與顯示的圖片格式無(wú)關(guān)  
          //因?yàn)槲绎@示jsp和gif都沒(méi)有錯(cuò)誤。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才可以實(shí)現(xiàn)。
          posted on 2005-11-12 12:08 sharky的點(diǎn)滴積累 閱讀(473) 評(píng)論(0)  編輯  收藏

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 德清县| 阜阳市| 乌什县| 上饶市| 大田县| 武邑县| 渑池县| 普陀区| 嘉祥县| 阿坝县| 莎车县| 石河子市| 阿鲁科尔沁旗| 塘沽区| 安丘市| 乌拉特中旗| 武安市| 商河县| 鄄城县| 长丰县| 额济纳旗| 大余县| 徐水县| 赫章县| 临朐县| 黎城县| 偃师市| 牙克石市| 乳源| 佛山市| 哈尔滨市| 阿拉善右旗| 南川市| 教育| 宿州市| 长沙县| 宜黄县| 双峰县| 理塘县| 福贡县| 贡觉县|