package com.shxt.util;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
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;
/**
* 文件上传工具类
* @author 韩老师
* @ClassName: FileUploadTool
* @Version 1.0
* @ModifiedBy
* @Copyright 四海兴唐
* @date 2014-3-10 上午09:51:11
* @description
*/
public class FileUploadTool {
/**具有所有表单信息的请求*/
private HttpServletRequest request;
/**存放单个数值的表单数据的KV对,如:文本框,单选框等*/
private Map<String, String> map;
/**存放多个数值的表单数据的KV对,如:多选框*/
private Map<String, List<String>> mapValues;
/**文件的上传路径-项目的文件夹*/
private String filePath;
/**文件最终上传到服务器的位置*/
private String fileServerUrl;
/**
* 基本构造方法,默认上传文件的路径是 image
* @author 韩老师
* @date 2014-3-10 上午10:30:51
* @param request 具有表单数据的请求
*/
public FileUploadTool(HttpServletRequest request) {
this(request, "upload");
}
/**
* @author 韩老师
* @date 2014-3-10 上午10:30:51
* @param request 具有表单数据的请求
* @param filePath 上传文件的路径
*/
public FileUploadTool(HttpServletRequest request, String filePath) {
this.request = request;
this.filePath = filePath;
map = new HashMap<String, String>();
mapValues = new HashMap<String, List<String>>();
upload();//上传文件
}
/**
* 指定上传到服务器上的文件名称
* @author 韩老师
* @title: getFileName 用户上传的文件名称
* @date 2014-3-10 上午10:26:05
* @param fileName 保存到服务器的文件名称
* @return String
*/
private String getFileName(String fileName) {
return UUID.randomUUID() + fileName.substring(fileName.lastIndexOf(".")) ;
}
/**
* 执行上传文件
* @author 韩老师
* @title: upload
* @date 2014-3-10 下午12:13:46 void
*/
@SuppressWarnings("unchecked")
public void upload() {
//获取文件最终上传到服务器的位置-文件夹
fileServerUrl = request.getSession().getServletContext().getRealPath(filePath);
//如果此文件夹不存在,则新创建一个。
File floder = new File(fileServerUrl);
if(!floder.exists()) {
floder.mkdir();
}
DiskFileItemFactory dff = new DiskFileItemFactory();
ServletFileUpload sfu = new ServletFileUpload(dff);
try {
//把表单标签封装成FileItem对象
List<FileItem> list = sfu.parseRequest(request);
//用来处理多选框等多个数值的表单,存放一个表单控件的多个数据
List<String> values;
//遍历每个FileItem对象,即遍历每个表单标签
for (int i = 0; i < list.size(); i++) {
//获取当前所遍历的表单对象
FileItem fileItem = list.get(i);
//这里获取的是表单标签的name属性值,即Key值
String targetName = fileItem.getFieldName();
if(fileItem.isFormField()) {//是普通的表单标签
//取出普通标签的值
String value = fileItem.getString("UTF-8");
//把此表单控件的name属性值,以及用户所填的数据,一起放到map中
map.put(targetName, value);
//获取多个同名控件的数值集合
values = mapValues.get(targetName);
//如果没有,即第一次添加
if(values == null) {
//则新创建一个集合
values = new ArrayList<String>();
//把此表单数值集合,放到多数值的map集合中
mapValues.put(targetName, values);
}
//添加当前的数值到集合中。
values.add(value);
}else {//是文件标签
String fileName = fileItem.getName();//获取文件的名称-用户上传的
if(!"".equals(fileName)) {//如果用户已选择文件
//获取上传到服务器上的文件名称
fileName = getFileName(fileName);
//把此控件的name属性值,及上传到服务器上的文件名称,一起放到map中
map.put(targetName, fileName);
//获取此多个文件的数值集合
values = mapValues.get(targetName);
//如果没有,即第一次添加
if(values == null) {
//则新创建一个集合
values = new ArrayList<String>();
//把此表单数值集合,放到多数值的map集合中
mapValues.put(targetName, values);
}
//把此控件的上传到服务器的文件名称添加到当前的数值到集合中。
values.add(fileName);
//这是上传文件的关键操作
fileItem.write(new File(fileServerUrl, fileName));
}
}
}
} catch (FileUploadException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 获取单数据表单中的内容
* @author 韩老师
* @title: getParameter
* @date 2014-3-10 上午10:30:48
* @param key
* @return String
*/
public String getParameter(String key) {
return map.get(key);
}
/**
* 获取多数据表单控件中的内容
* @author 韩老师
* @title: getParamaterValues
* @date 2014-3-10 上午10:30:51
* @param key
* @return List<String>
*/
public List<String> getParamaterValues(String key) {
return mapValues.get(key);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
网上商城后台管理系统(Oracle+Java web) (313个子文件)
JDBCTools.class 7KB
ProductService.class 5KB
FileUploadTool.class 4KB
AnalyzeService.class 4KB
CategoryService.class 4KB
LoginServlet.class 4KB
FontHandle.class 3KB
ManagerUpdateServlet.class 3KB
ManagerService.class 3KB
ManagerAddServlet.class 3KB
ProductUpdateServlet.class 3KB
ProductAddServlet.class 3KB
ProductDelServlet.class 2KB
UserDelServlet.class 2KB
CategoryDelServlet.class 2KB
CategoryUpdateServlet.class 2KB
OrderService.class 2KB
Product.class 2KB
DateCountAjaxServlet.class 2KB
CategoryAddServlet.class 2KB
ProductUpdateShowServlet.class 2KB
UserService.class 2KB
IndexNumberAnalyzeServlet.class 2KB
CategoryUpdateShowServlet.class 2KB
LoginFilter.class 2KB
Manager.class 2KB
ManagerAjaxServlet.class 2KB
LoginAjaxServlet.class 2KB
CategoryAjaxServlet.class 2KB
ProductSelServlet.class 2KB
ManagerUpdateShowServlet.class 2KB
ThreeMonthSaleRoomAjaxServlet.class 2KB
OneWeekSaleRoomAjaxServlet.class 2KB
OneWeekNewUserAjaxServlet.class 2KB
OneWeekOrderAjaxServlet.class 2KB
CategoryAddShowServlet.class 2KB
ProductAddShowServlet.class 2KB
EvaluationShowServlet.class 2KB
CategorySelServlet.class 2KB
ManagerSelServlet.class 2KB
EvaluationCountAjaxServlet.class 2KB
OrderSelServlet.class 2KB
UserSelServlet.class 2KB
ManagerDelServlet.class 1KB
IsSendServlet.class 1KB
LoginService.class 1KB
Category.class 1KB
Page.class 1KB
Common.class 959B
MyConst.class 428B
.classpath 727B
org.eclipse.wst.common.component 464B
org.eclipse.wst.jsdt.ui.superType.container 49B
bootstrap.css 146KB
theme.css 38KB
select2.css 17KB
font-awesome.min.css 14KB
fullcalendar.css 10KB
alertify.css 7KB
datepicker.css 4KB
colorpicker.css 2KB
facybox.css 2KB
timepicker.css 2KB
fullcalendar.print.css 1KB
fontawesome-webfont.eot 27KB
fontawesome-webfont.eot@ 27KB
spinner.gif 2KB
jquery.elfinder.min.html 993B
favicon.html 993B
ojdbc6.jar 2.61MB
javax.servlet.jsp.jstl-1.2.1.jar 398KB
gson-2.2.2.jar 185KB
commons-io-2.0.1.jar 156KB
commons-fileupload-1.2.2.jar 58KB
javax.servlet.jsp.jstl-api-1.2.1.jar 32KB
FileUploadTool.java 6KB
JDBCTools.java 6KB
ProductService.java 5KB
AnalyzeService.java 4KB
LoginServlet.java 4KB
CategoryService.java 3KB
ManagerUpdateServlet.java 3KB
FontHandle.java 3KB
ManagerAddServlet.java 3KB
ManagerService.java 3KB
ProductUpdateServlet.java 2KB
ProductAddServlet.java 2KB
Product.java 2KB
CategoryUpdateServlet.java 2KB
CategoryAddServlet.java 2KB
ProductDelServlet.java 2KB
IndexNumberAnalyzeServlet.java 2KB
UserDelServlet.java 2KB
DateCountAjaxServlet.java 2KB
CategoryDelServlet.java 2KB
UserService.java 2KB
ProductUpdateShowServlet.java 2KB
Manager.java 2KB
ProductSelServlet.java 2KB
CategoryUpdateShowServlet.java 1KB
共 313 条
- 1
- 2
- 3
- 4
资源评论
- 普通网友2017-10-20啊第一次 怎么没有格式
- liuzhipeng1391242018-05-29建表语句啦
eternitylizw
- 粉丝: 5
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功