解决CommonFileUpload上传文件不能获取多选框

<pre name="code" class="java"><pre name="code" class="java"><pre name="code" class="java">package cn.parho.action;


import java.util.HashMap;
import java.util.Map;


public class MyRequest {


public  MyRequest(){
		map = new HashMap<String,String>();
	}
private HashMap<String,String> map;


public boolean containsKey(String key){
	return map.containsKey(key);
}
public Map<String,String>getMap(){
	return map;
}
public void setParameter(String key,String value){
	map.put(key, value);
}
public String getParameter(String key){
	return map.get(key);
}
}





package cn.parho.action;
import java.io.File;
import java.io.IOException;
import java.util.HashSet;
import java.util.List;
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;

import cn.parho.dao.UserFilesDAO;
import cn.parho.util.BackFileName;
import cn.parho.vo.UserFiles;


public class DoUploadAction extends HttpServlet {


	/**
	 * The doPost method of the servlet. <br>
	 *
	 * This method is called when a form has its tag value method equals to post.
	 * 
	 * @param request the request send by the client to the server
	 * @param response the response send by the server to the client
	 * @throws ServletException if an error occurred
	 * @throws IOException if an error occurred
	 */
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		String path = request.getRealPath("files");
		//允许图片上传的文件类型作为一个HashSet集合存放
		HashSet<String> allowPic= new HashSet<String>();
		allowPic.add("gif");
		allowPic.add("jpg");
		allowPic.add("jpeg");
		allowPic.add("png");
		
		//1、创建servletfileupload对象
		ServletFileUpload fileUpload = new ServletFileUpload(new DiskFileItemFactory());
		//2、使用上传对象解析请求request
		//设置文件大小
		//fileUpload.setFileSizeMax();设置单独文件大小
		//fileUpload.setSizeMax();设置文件总大小
		List<FileItem> list = null;
		
		//解析request内容
		try {
			list = fileUpload.parseRequest(request);
		} catch (FileUploadException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			response.sendRedirect("upload.jsp?ident=1");
		}
		System.out.println(list.size());
		
		MyRequest myrequest = new MyRequest();
		String oldname="";
		String newname="";
		for (int i = 0; i < list.size(); i++) {
			FileItem item = list.get(i);
			//判断当前对象是否是表单对象还是文件对象
			if(item.isFormField()){//表单对象
				String name = item.getFieldName();//控件名
				String value =item.getString("UTF-8");
				//判断当前这个键值是不是存在这个name了如果已经包含则说明是个多选框
				if(myrequest.containsKey(name)){
					value = myrequest.getParameter(name)+","+value;
					myrequest.setParameter(name, value);
				}else{
					
					myrequest.setParameter(name, value);
				}
			}else{
				//处理文件控件
				long fsize = item.getSize();//文件大小
				String fname = item.getName();//文件名
				//截取文件名fname,后缀名
				String lastname = fname.substring(fname.lastIndexOf(".")+1);
				//如果上传的文件类型在设定的集合中找不到,则不允许上传
			/*	if(!allowPic.contains(lastname)){
					response.sendRedirect("upload.jsp?ident=2");
					return;
				}*/	//得到文件名+后缀名
					fname=fname.substring(fname.lastIndexOf("\\")+1);
					oldname = oldname+fname+",";
					System.out.println("原文件名:"+fname);
					fname=BackFileName.backName(fname);
					newname = newname+fname+",";
					System.out.println("新文件名:"+fname);
					//保存路径等于服务器地址+新的文件名
					File f = new File(path+"/"+fname);				
					//开始上传
					try {
						item.write(f);
					} catch (Exception e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
				
			}
		
		//取得普通空件的值
		String username = myrequest.getParameter("username");
		String ck = myrequest.getParameter("ck");
		System.out.println(username);
		System.out.println(ck);
		
		//jdcb操作...
	
		oldname = oldname.substring(0,oldname.length()-1);//最后一位不要逗号
		newname = newname.substring(0,newname.length()-1);//最后一位不要逗号
		UserFilesDAO dao = new UserFilesDAO();
		UserFiles userfile = new UserFiles();
		userfile.setUsrname(myrequest.getParameter("username"));
		userfile.setFilename(oldname);
		userfile.setNewfilename(newname);
	
		try {
			dao.saveUserFiles(userfile);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		}
		
	}





 
 

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值