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

前言

  最近在学习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 memory
		factory.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 thrown
		upload.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.txt
					fileName= 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;
	
	@Override
	public void init() throws ServletException {
		itemManager = new ItemManagerImpl();
	}
	
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request,response);
	}

	@Override
	protected 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>

总结

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


评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值