<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();
}
}
}
解决CommonFileUpload上传文件不能获取多选框
最新推荐文章于 2020-12-18 14:59:03 发布