找不到啊,论坛上图片都存为blob类型的。

解决方案 »

  1.   

    存储时好象没有差别的<html><head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <meta name="GENERATOR" content="Microsoft FrontPage 4.0">
    <meta name="ProgId" content="FrontPage.Editor.Document">
    <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">
    </form>
    </body></html>
    <%@  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:@172.16.0.4:1521:frerp";
    Connection  con=DriverManager.getConnection(url,"kr863","krsoft");//插入数据库
    String  sql="insert  into  test_img  values  (?,?,?)";
    //获取传值ID
    String  id=request.getParameter("id");
    //获取image的路径
    String  kk=request.getParameter("image");
    //转换成file格式
    java.io.File  filename=new  java.io.File(kk);//将文件的长度读出,并转换成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,12);
    //ps.setBinaryStream(3,fis,fis.available());
    ps.executeUpdate();
    //ps.execute();
    ps.close();
    fis.close();
    con.close();
    out.println("ok!!!");
    %>参照我的方法,就可以了。
      

  2.   

    to linsr();
    按你的方法出现如下异常:
    HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:254)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:494)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:594)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
    at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
    at java.lang.Thread.run(Thread.java:534)
    root cause java.lang.NullPointerException
    at java.io.File.(File.java:180)
    at org.apache.jsp.insertNews_jsp._jspService(insertNews_jsp.java:63)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:210)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:494)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2415)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
    at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
    at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:594)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
    at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
    at java.lang.Thread.run(Thread.java:534)--------------------------------------------------------------------------------Apache Tomcat/4.1.24
      

  3.   

    /**
     *先在 HR 方案中创建表,如下:
     *      CREATE TABLE "HR"."BOOK" ("NAME" VARCHAR2(10) NOT NULL, 
     *          "IMAGE" BLOB NOT NULL)  
     *然后在sql_plus中为book表添加一行,如下:
     *      insert into book values('lover',EMPTY_BLOB())
     *之后编译并运行下面程序即可成功插入图像。
     *第一次插入图像数据,之后再运行一次,
     *即可看到blob长度由0变成图像大小,证明运行成功,祝好运:)
     */import java.io.*;
    import java.sql.*;
    import oracle.jdbc.*;
    import oracle.sql.*;public class Test{
    public static void main(String []args ) throws SQLException,IOException{
    try{
    Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); 
    }catch(java.lang.ClassNotFoundException e){
    }catch(java.lang.InstantiationException e){
    }catch(java.lang.IllegalAccessException e){}

    String user="hr",password="hr";
    String url="jdbc:oracle:thin:@localhost:1521:arron"; 

    //自选文件
    File f=new File("G:\\arron.jpg");
            FileInputStream fis=new FileInputStream(f);
            
            //将文件内容读入数组中
            byte b[]=new byte[(int)f.length()];
            fis.read(b);
            
            //显示文件长度,以便与后来所检索到的blob长度相比较
            System.out.println(b.length);

    Connection conn= DriverManager.getConnection(url,user,password); 

    //以下设置是必须的,否则会出错
    conn.setAutoCommit(false);

    Statement stmt=conn.createStatement(); //以下检索中必须有"for update"字样
    OracleResultSet rs=(OracleResultSet)stmt.executeQuery("select * from book where name='lover' for update");;

    if(rs.next()){
    System.out.println("name:         "+rs.getString(1));

    //为了测试方便,这里只取blob长度,
    //只要blob数据长度与输入文件的长度相等,即操作成功
    System.out.println("image_length: "+rs.getBLOB(2).length()); //此处BLOB类型为oracle.sql.BLOB
    BLOB blob=rs.getBLOB(2);
    blob.putBytes(1,b);
    conn.commit();
    } fis.close();
    rs.close();
    stmt.close();
    conn.close();
    }
    }