技术开发 频道

实例讲解如何用Struts向MySQL中储存图片

  【IT168 技术文档】这个例子是通过用Struts的FormFile来写入到MySQL中。用户通过选一个图片,然后按submit就可以存入数据库中。

  1.首先需要建立一个表: 

create table test ( name varchar(20), pic blob ); 在MySQL的test库中 <%@ page language="java"%> <%@ taglib uri= "http://jakarta.apache.org/struts/tags-bean" prefix="bean"%> <%@ taglib uri= "http://jakarta.apache.org/struts/tags-html" prefix="html"%> <html> <head> <title>JSP for multiForm form</title> </head> <body> <html:form action="/multi" enctype="multipart/form-data"> 一定要用enctype=“multipart/form-data“ 不然就提交之后就会有抛出异常 file : <html:file property="file"/> <html:errors property="file"/></br> name : <html:text property="name"/> <html:errors property="name"/></br> <html:submit/><html:cancel/> </html:form> </body> </html>

  2. 相对应的ActionForm:

  //Created by MyEclipse Struts   // XSL source (default):   platform:/plugin/com.genuitec.eclipse.   cross.easystruts.eclipse_3.8.1   /xslt/JavaClass.xsl   package saoo.struts.form;   import org.apache.struts.action.ActionForm;   import org.apache.struts.upload.FormFile;   /**   * MyEclipse Struts   * Creation date: 08-24-2004   *   * XDoclet definition:   * @struts:form name="multiForm"   */   public class MultiForm extends ActionForm   {   // ----------------   Instance Variables   /** file property */   private FormFile file;   /** name property */   private String name;   // -----------------   Methods   /**   * Returns the file.   * @return FormFile   */   public FormFile getFile()   {   return file;   }   /**   * Set the file.   * @param file The file to set   */   public void setFile(FormFile file)   {   this.file = file;   }   /**   * Returns the name.   * @return String   */   public String getName()   {   return name;   }   /**   * Set the name.   * @param name The name to set   */   public void setName(String name)   {   this.name = name;   }   }

  3. 对就的Action:

  //Created by MyEclipse Struts   // XSL source (default):   platform:/plugin/com.genuitec.eclipse.   cross.easystruts.eclipse_3.8.1   /xslt/JavaClass.xsl   package saoo.struts.action;   import java.io.FileNotFoundException;   import java.io.IOException;   import java.sql.Connection;   import java.sql.DriverManager;   import java.sql.PreparedStatement;   import java.sql.SQLException;   import javax.servlet.http.HttpServletRequest;   import javax.servlet.http.HttpServletResponse;   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.upload.FormFile;   import saoo.struts.form.MultiForm;   /**   * MyEclipse Struts   * Creation date: 08-24-2004   *   * XDoclet definition:   * @struts:action path="/multi"   name="multiForm" input="/form/multi.jsp"   scope="request"   */   public class MultiAction extends Action   {   // ---------------   Instance Variables   // ---------------   Methods   /**   * Method execute   * @param mapping   * @param form   * @param request   * @param response   * @return ActionForward   */   public ActionForward execute(   ActionMapping mapping,   ActionForm form,   HttpServletRequest request,   HttpServletResponse response)   {   MultiForm multiForm = (MultiForm)   form;   FormFile file = multiForm.getFile();   String name = multiForm.getName();   try {   Class.forName   ("org.gjt.mm.mysql.Driver");   String url="jdbc:mysql:   ///test";   Connection con=DriverManager.getConnection   (url,"root","password");   String sql="insert into pic values (?,?)";   PreparedStatement ps   =con.prepareStatement(sql);   ps.setString(1, name);   //加入图片到数据库   ps.setBinaryStream   (2,file.getInputStream(),   file.getFileSize());   ps.executeUpdate();   ps.close();   con.close();   } catch (SQLException se)   {   se.printStackTrace();   return mapping.findForward("error");   } catch (ClassNotFoundException e) {   // TODO Auto-generated catch block   e.printStackTrace();   return mapping.findForward("error");   } catch (FileNotFoundException e) {   // TODO Auto-generated catch block   e.printStackTrace();   return mapping.findForward("error");   } catch (IOException e) {   // TODO Auto-generated catch block   e.printStackTrace();   return mapping.findForward("error");   }   return mapping.findForward("success");   }   }
0
相关文章