阅读背景:

java学习之图片上传demo

来源:互联网 

每次都是用的框架来弄图片上传的,这次自己复习了下,没用框架来弄弄,一个简略的demo,代码以下:

/**
 * 
 */
package com.servlet;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.tomcat.util.http.fileupload.FileItem;
import org.apache.tomcat.util.http.fileupload.disk.DiskFileItemFactory;
import org.apache.tomcat.util.http.fileupload.servlet.ServletFileUpload;
import org.apache.tomcat.util.http.fileupload.servlet.ServletRequestContext;

/**
 * @author Administrator
 *
 */
public class PreLoadPicServlet extends HttpServlet{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doPost(req,resp);
	}
	/**
	 * 参考这个api:https://commons.apache.org/proper/commons-fileupload/apidocs/index.html
	 */
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		req.setCharacterEncoding("utf-8");
		resp.setCharacterEncoding("text/html;charset=utf-8");
		//未解析类供给配置信息
		DiskFileItemFactory factory = new DiskFileItemFactory();
		//创立解析类的实例
		ServletFileUpload sfu = new ServletFileUpload(factory);
		//设置文件的最大值,4M
		sfu.setSizeMax(1024*1024*4);
		/**
		 * 我没有下载apache的commons-fileupload的jar包,直接用的eclipse创立的
		 * 所以原来parseParameterMap(request req);现在变成了
		 * parseParameterMap(requestContext rc);所以只能创立实现改接口的类的对象
		 */
		ServletRequestContext src = new ServletRequestContext(req); 
		try {
			//每一个表单域中的数据会封装到一个对应的FileItem对象上
			
			List<FileItem> items = sfu.parseRequest(src);
			for(FileItem item:items){
				//断定是不是是普通类型的表单,如果不是那末就是file类型
				if(!item.isFormField()){
					//得到文件名
					String fileName = item.getName();
					//分割出名字和后缀,这里用了一个实体类来代表文件
					String[] tempS = fileName.split(".");
					//写入文件,这里由因而初学文件上传,所以就简略的随意找了个目录
					File file = new File("E:"+File.separator+fileName);
					item.write(file);
				}
			}
		} catch (Exception e1) {
			e1.printStackTrace();
		}
	}
}/




你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: