设为首页 收藏本站
查看: 416|回复: 0

[经验分享] apache 提供上传 DiskFileItemFactory ServletFileUpload

[复制链接]

尚未签到

发表于 2017-1-3 12:10:57 | 显示全部楼层 |阅读模式
1、代码:
public Map<String, String> fileUpload(HttpServletRequest request,final String uploadPath) {
log.debug("execute fileUpload method.");
try {
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("UTF-8");
List items = upload.parseRequest(request);// 上传文件解析
Iterator itr = items.iterator();// 枚举方法
while (itr.hasNext()) {
FileItem item = (FileItem) itr.next();
if (!item.isFormField()) {// 判断是文件还是文本信息
if (!"".equals(item.getName())) {// 判断是否选择了文件
// log.info("上传文件的大小:" + item.getSize());
// log.info("上传文件的类型:" + item.getContentType());
// item.getName()返回上传文件在客户端的完整路径名称
// log.info("上传文件的名称:" + item.getName());
// 此时文件暂存在服务器的内存当中
// log.info("filePath:=====" + filePath);
File file = new File(uploadPath,item.getName());
// 获取根目录对应的真实物理路径
HashMap<String, String> hm = new HashMap();
hm.put("FileSize", String.valueOf(item.getSize()));
item.write(file);// 保存文件在服务器的物理磁盘中
hm.put("FileType", item.getContentType());
String OldFileName = item.getName();
if (OldFileName.indexOf("\\") != -1)
hm.put("OldFileName",
OldFileName.substring(OldFileName.lastIndexOf("\\") + 1));
else
hm.put("OldFileName", OldFileName);
hm.put("FileName", item.getName());
fileMap.put(item.getFieldName(), hm);
}
} else {
if (map.containsKey(item.getFieldName())) {
map.put(item.getFieldName(),
map.get(item.getFieldName()) + "," + item.getString("UTF-8"));
} else {
map.put(item.getFieldName(), item.getString("UTF-8"));// 表单中其他信息添加到Map中
}
}
}
return map;
} catch (Exception e) {
log.error(e);
e.printStackTrace();
return null;
}
}
2.调用
Map<String, String> sqlMap = fu.fileUpload(request, filePath);
StruObject struObject = new StruObject();
if(fu.getFileMap() != null && fu.getFileMap().get("file") != null){
String fileName = fu.getFileMap().get("file").get("FileName");
struObject.setFileName(dateStr + fileName);
}
struObject.setStruId(sqlMap.get("struId"));
struObject.setLoadRate(sqlMap.get("loadRate"));
struObject.setRemark(sqlMap.get("remark"));
struObject.setLoadType(sqlMap.get("loadType"));
struObject.setProcedureName(sqlMap.get("procedureName"));
struObject.setFilePath(datasqlPath + File.separator);
struService.updateStru(struObject);
此时注意事项:1.表单中所有参数都在[size=1em]sqlMap中,request.getParameter是null
2.spring mvc中<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">一定要去掉,加上会将request对象转换

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-323280-1-1.html 上篇帖子: apache-ftpserver-1.0.6 下篇帖子: 安装apache时的配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表