【DRP】——图片上传(第一种)

来源:互联网 发布:马尔萨斯陷阱 知乎 编辑:程序博客网 时间:2024/05/22 13:36

前言

  最近在学习DRP,其中有一个功能是实现对物料信息图片上传的功能
   

功能实现

   1.引入jar包


    2.Servlet

    FileUploadServlet.java
package com.bjpowernode.drp.basedata.web;import java.io.File;import java.io.IOException;import java.io.PrintWriter;import java.util.Iterator;import java.util.List;import java.util.regex.Matcher;import java.util.regex.Pattern;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.apache.commons.fileupload.FileItem;import org.apache.commons.fileupload.FileUploadException;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;public class FileUploadServlet extends HttpServlet {//private String uploadPath = "D:\\DRP\\apache-tomcat-7.0.75\\webapps\\drp4.0\\upload\\"; // 用于存放上传文件的目录private File uploadPath;//private File tempPath = new File("D:\\addnetFile\\tmp\\"); // 用于存放临时文件的目录private File tempPath;public void doPost(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException {//multipart/form-data//String itemNo = req.getParameter("itemNo");//System.out.println("itemNo======" + itemNo);DiskFileItemFactory factory = new DiskFileItemFactory();// maximum size that will be stored in memoryfactory.setSizeThreshold(4096);// the location for saving data that is larger than getSizeThreshold()factory.setRepository(tempPath);ServletFileUpload upload = new ServletFileUpload(factory);// maximum size before a FileUploadException will be thrownupload.setSizeMax(1000000 * 20);try {List fileItems = upload.parseRequest(req);String itemNo ="";for(Iterator iter = fileItems.iterator(); iter.hasNext();){FileItem item = (FileItem) iter.next();//是普通的表单输入域if(item.isFormField()){if("itemNo".equals(item.getFieldName())){itemNo = item.getString();}}// 是否為input="type"输入域if (!item.isFormField()) {String fileName = item.getName();long size = item.getSize();if ((fileName == null || fileName.equals("")) && size == 0){continue;}//截取字符串 C:\Users\sms\Desktop\1.txtfileName= fileName.substring(fileName.lastIndexOf("\\") + 1, fileName.length()); //item.write(new File(uploadPath + itemNo + ".jpg"));item.write(new File(uploadPath,  itemNo + ".jpg"));} }res.sendRedirect(req.getContextPath() + "/servlet/item/SearchItemServlet");} catch (Exception e) {e.printStackTrace();}}public void init() throws ServletException {  uploadPath= new File(getServletContext().getRealPath("upload"));  System.out.println("uploadPath=====" + uploadPath);  //如果目录不存在  if(!uploadPath.exists()){  //创建目录  uploadPath.mkdir();  }  tempPath=new File(getServletContext().getRealPath("temp"));  if(!tempPath.exists()){  tempPath.mkdir();  }}}
   ShowItemUploadServlet
package com.bjpowernode.drp.basedata.web;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import com.bjpowernode.drp.basedata.domain.Item;import com.bjpowernode.drp.basedata.manager.ItemManager;import com.bjpowernode.drp.basedata.manager.ItemManagerImpl;/** * @author sms * */public class ShowItemUploadServlet extends HttpServlet {private ItemManager itemManager;@Overridepublic void init() throws ServletException {itemManager = new ItemManagerImpl();}@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request,response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {String itemNo = request.getParameter("itemNo");Item item = itemManager.findItemById(itemNo);request.setAttribute("item", item);request.getRequestDispatcher("/basedata/item_upload.jsp").forward(request, response);}}

  3.配置文件web.xml

<servlet><servlet-name>FileUploadServlet</servlet-name><servlet-class>com.bjpowernode.drp.basedata.web.FileUploadServlet</servlet-class><load-on-startup>10</load-on-startup></servlet><servlet-mapping><servlet-name>FileUploadServlet</servlet-name><url-pattern>/servlet/item/FileUploadServlet</url-pattern></servlet-mapping><servlet><servlet-name>ShowItemUploadServlet</servlet-name><servlet-class>com.bjpowernode.drp.basedata.web.ShowItemUploadServlet</servlet-class></servlet><servlet-mapping><servlet-name>ShowItemUploadServlet</servlet-name><url-pattern>/servlet/item/ShowItemUploadServlet</url-pattern></servlet-mapping>

    4.item_upload.jsp

<tr><td height="74"><div align="right">图片:&nbsp; </div></td><td><img src="upload/<%=item.getItemNo()%>.jpg" width="85" height="49"></td></tr>

总结

  这种方式是有不足之处的,下篇写另一种方法。


原创粉丝点击