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.表单中所有参数都在sqlMap中,request.getParameter是null 2.spring mvc中<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">一定要去掉,加上会将request对象转换
今天的文章apache 提供上传 DiskFileItemFactory ServletFileUpload分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/13123.html