怎么样在本地的文件夹中选择图片加载到jsp页面中?然后怎么样把图片存入数据库(sqlserver2000),还需要在查询的时候查询出这个图片? 
注:是不是需要先把本地图片存入到服务器的临时文件夹下? 
有没有参考的代码,谢谢各位大虾~~~跪求!!! 

解决方案 »

  1.   

    JSP页面
    <%@page contentType="text/html;charset=GBK"%>
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-logic"
    prefix="logic"%>
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-html"
    prefix="html"%>
    <%@ taglib uri="http://jakarta.apache.org/struts/tags-bean"
    prefix="bean"%>
    <html>
    <script type="text/javascript">
    function v(){document.myform.img.src=document.myform.pic.value;
    }</script>
    <body>
    <form action="photo.do?p=main" method="POST" enctype="multipart/form-data" name="myform"><%--
    得到本地的图片
          --%><input type="file" name="pic" onchange="v()" >
         <img name="img" src="" ><%--
          
      显示数据库中的图片    
     --%><img name="abc" src="photo.do?p=view">
    <input type="submit" value="going"/>
    </form>
    </body>
    </html>
    Action
    /*
     * Generated by MyEclipse Struts
     * Template path: templates/java/JavaClass.vtl
     */
    package action;import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.actions.DispatchAction;
    import org.apache.struts.upload.FormFile;import form.PhotoForm;/**
     * MyEclipse Struts Creation date: 04-13-2007
     * 
     * XDoclet definition:
     * 
     * @struts.action validate="true"
     */
    public class PhotoAction extends DispatchAction {
    /*
     * Generated Methods
     */ /**
     * Method execute
     * 
     * @param mapping
     * @param form
     * @param request
     * @param response
     * @return ActionForward
     */
    public ActionForward main(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) {
    // TODO Auto-generated method stub PhotoForm tform = (PhotoForm) form; FormFile file = tform.getPic();
    String name = "ruby";
    HttpSession session = request.getSession();
     if (file.getFileSize() > 10000) {         }
    // 获取文件名
    String filename = file.getFileName();
    System.out.println(filename);
    int index = filename.lastIndexOf(".");
    System.out.println(index);
    filename = filename.substring(index);
    System.out.println(filename);
    // 设置图片文件临时存放的路径
    // String path = session.getServletContext().getRealPath("/") +
    //                       
    // "UploadFile\\" + name + filename;
    String path = "D:/" + name + filename;
    try {
    // 读取文件中的数据,获取二进制的数据流
    InputStream stream = file.getInputStream();
    // 把数据写到指定路径
    OutputStream bos = new FileOutputStream(path);
    int bytesRead = 0;
    byte[] buffer = new byte[8192];
    while ((bytesRead = stream.read(buffer, 0, 8192)) != -1) {
    bos.write(buffer, 0, bytesRead);
    }
    bos.flush();
    bos.close();
    stream.close();
    } catch (Exception fe) { }
    file.destroy();
    PreparedStatement pst = null;
    String sql = "insert into picture(id,pic) values(?,?)";
    String id = "";
    int a;
    // 存储图片到表中
    try {
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
    String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test";
    Connection m_conn = DriverManager.getConnection(url, "sa", "1234");
    //查询ID
    Statement s=m_conn.createStatement();
    String str1="select max(id) from picture";
    ResultSet rs=s.executeQuery(str1);
    while(rs.next())
    {
    id=rs.getString(1);
    }
    if(id==null){
    id="100";
    a=Integer.parseInt(id);
    }else{
    a=Integer.parseInt(id)+1;
    }
    System.out.println(a);
    pst = m_conn.prepareStatement(sql); pst.setInt(1, a); File filea = new File(path);
    FileInputStream in = new FileInputStream(filea);
    pst.setBinaryStream(2, in, in.available()); if (filea.exists()) {
                    filea.delete();
                    System.out.println("删除临时文件");
                }
            
            pst.execute();
            m_conn.commit();
           
        } catch (IOException e) {
            System.out.println("文件读取失败.");
            e.printStackTrace();
        } catch (Exception e) {
            System.out.println("插入记录失败");
            e.printStackTrace();
           
        }
    return mapping.findForward(null); }


    //  从表中得到照片到页面  
    public ActionForward view(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) {

      


            PreparedStatement pst = null;
            Connection m_conn=null;
            try {
             Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
         String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test";
          m_conn = DriverManager.getConnection(url, "sa", "1234");
         String sql = "select pic from picture where id=" + 4;
                pst = m_conn.prepareStatement(sql);
                ResultSet rs = pst.executeQuery();
                if (rs.next()) {
                    InputStream in = rs.getBinaryStream("pic");
                    int bytesRead = 0;
                    byte[] buffer = new byte[8192];
                    //设置照片格式.
                    response.setContentType("image/gif");
                    //返回ServletOutputStream 对象.
                    OutputStream outs = response.getOutputStream();
                    while ((bytesRead = in.read(buffer, 0, 8192)) != -1) {
                        outs.write(buffer, 0, bytesRead);
                    }
                    outs.flush();
                    in.close();
                    rs.close();
                } else {
                    rs.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    pst.close();
                    m_conn.close();
                } catch (SQLException ex) {
                    ex.printStackTrace();
                }
            }
    return null;



    }
    }
    FormBean
    /*
     * Generated by MyEclipse Struts
     * Template path: templates/java/JavaClass.vtl
     */
    package form;import javax.servlet.http.HttpServletRequest;
    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.upload.FormFile;/** 
     * MyEclipse Struts
     * Creation date: 04-13-2007
     * 
     * XDoclet definition:
     * @struts.form name="photoForm"
     */
    public class PhotoForm extends ActionForm {
    /*
     * Generated Methods
     */
    private FormFile pic; public FormFile getPic() {
    return pic;
    } public void setPic(FormFile pic) {
    this.pic = pic;
    } /** 
     * Method validate
     * @param mapping
     * @param request
     * @return ActionErrors
     */
    public ActionErrors validate(ActionMapping mapping,
    HttpServletRequest request) {
    // TODO Auto-generated method stub
    return null;
    } /** 
     * Method reset
     * @param mapping
     * @param request
     */
    public void reset(ActionMapping mapping, HttpServletRequest request) {
    // TODO Auto-generated method stub
    }
    }