我做的图片存入和读取你参考下~
第一个页面InputImage.jsp
<%@ page contentType="text/html;charset=gb2312"%>
<HTML>
<HEAD>
<TITLE>存储图片</TITLE>
</HEAD>
<body>
<FORM METHOD=POST ACTION="testimage.jsp">
标 题:<INPUT TYPE="text" NAME="content"><BR>
图 片:<INPUT TYPE="file" NAME="image"><BR>
内容:<TEXTAREA name="txtmail" rows="15" cols="90" style="BORDER-BOTTOM: #000000 1px solid; BORDER-LEFT: #000000 1px solid; BORDER-RIGHT: #000000 1px solid; BORDER-TOP: #000000 1px solid; FONT-SIZE: 9pt; HEIGHT: 200px; WIDTH: 100%" wrap="physical" ></TEXTAREA><br>
      <INPUT TYPE="submit"></form>
</body>
</HTML>

解决方案 »

  1.   

    第二个存入testimage.jsp
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.sql.*" %>
    <%@ page import="java.util.*"%>
    <%@ page import="java.text.*"%>
    <%@ page import="java.io.*"%>
    <html>
    <body>
    <%
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Connection con=DriverManager.getConnection("jdbc:odbc:denglu","sa","");
    Statement stmt=con.createStatement();
    String content=request.getParameter("content");
    content=new String(content.getBytes("8859_1"),"gb2312");
    String filename=request.getParameter("image");
    filename=new String(filename.getBytes("8859_1"),"gb2312");
    String detail=request.getParameter("txtmail");
    detail=new String(detail.getBytes("8859_1"),"gb2312");
    FileInputStream str=new FileInputStream(filename);
    String sql="insert into picturenews(content,image,detail) values(?,?,?)";
    PreparedStatement pstmt=con.prepareStatement(sql);
    pstmt.setString(1,content);
    pstmt.setBinaryStream(2,str,str.available());
    pstmt.setString(3,detail);
    pstmt.execute();
    out.println("ok!~~~~~~~~~~~");
    %>
      

  2.   

    第三个读取
    test.jsp
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.sql.*" %>
    <html>
    <head>
    <title>动态显示数据库图片</title>
    </head>
    <body>
    <%
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Connection con=DriverManager.getConnection("jdbc:odbc:denglu","sa","");
    Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
    String sql=new String();
    sql= "select * from picturenews";
    ResultSet rs=stmt.executeQuery(sql);
    rs.last();
    //将指针移至最后一条记录
    %>
    <table>
    <tr><td><IMG height=99 src="testimageout.jsp?id=1" width=136></td><td><IMG height=99 src="testimageout.jsp?id=<%=rs.getInt("id")%>" width=136></td></tr></table>
    </body>
    </html>
      

  3.   

    数据的读出并显示图片:<% 
    set connGraph=server.CreateObject("ADODB.connection") 
    connGraph.ConnectionString="provider=sqloledb;server=YourServer;database=YourDB;uid=AAA;pwd=BBB"
    connGraph.Open 
    set rec=server.createobject("ADODB.recordset") 
    strsql="select img from YourTab where id="&trim(request("id")) 
    rec.open strsql,connGraph,1,1 
    '下面两行是关键:
    Response.ContentType = "image/*" 
    Response.BinaryWrite rec("img").getChunk(7500000) 
    rec.close 
    set rec=nothing 
    set connGraph=nothing 
    %> 友情广告: 真正的免费空间和域名 申请: http://www.websamba.com/helloa/
    当天开通,FTP上传。
      

  4.   

    第四页读出testimageout.jsp
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.sql.*" %>
    <%@ page import="java.util.*"%>
    <%@ page import="java.text.*"%>
    <%@ page import="java.io.*"%>
    <html>
    <body>
    <%
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    //加载驱动程序类
    Connection con=DriverManager.getConnection("jdbc:odbc:denglu","sa","");
    Statement stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
    ResultSet rs=null;
    //建立ResultSet(结果集)对象
    int id= Integer.parseInt(request.getParameter("id"));
    //获得所要显示图片的编号id,并转换为整型
    String sql = "select image from picturenews WHERE id="+id+"";
    //要执行查询的SQL语句
    rs=stmt.executeQuery(sql);
    while(rs.next()) {
    ServletOutputStream sout = response.getOutputStream();
    //图片输出的输出流
    InputStream in = rs.getBinaryStream(1);
    byte b[] = new byte[0x7a120];
    for(int i = in.read(b); i != -1;)
    {
    sout.write(b);
    //将缓冲区的输入输出到页面
    in.read(b);
    }
    sout.flush();
    //输入完毕,清除缓冲
    sout.close();
    }
    %>
    </body>
    </html>一定行的通,有问题找我~
    www.enliang.com
    [email protected]
    欢迎切磋~~!
      

  5.   

    首先感谢sunenliang(andy)给予的极大帮助,但是读入数据库的时候图片,或文件仍无法大于6K,
    还有显示的时候系统提示错误如下:
    javax.servlet.ServletException: 无法转换为内部表示
    at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:471)
    at org.apache.jsp.new3$jsp._jspService(new3$jsp.java:91)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:107)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
    at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:201)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:381)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:473)
    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:243)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
    at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
    at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2347)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
    at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
    at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)
    at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)
    at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)
    at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1027)
    at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1125)
    at java.lang.Thread.run(Thread.java:536)
    root cause