学习总结之JavaWeb实现文件上传
2017-09-15 16:37
741 查看
JavaWeb实现文件的上传
文件上传的前提
1、提供form表单,method必须是post2、form表单的enctype必须是multipart/form-data
3、提供input type="file"类的上传输入域
在Web开发系统应用中,文件上传一般采用apache的开源工具common-fileupload文件上传组件
1,导入commons-fileupload相关jar包:
2.fileupload的核心类有:
DiskFileItemFactory、ServletFileUpload、FileItem。3,解析原理:
使用Apache文件上传组件处理文件上传,步骤如下: 2.1 创建一个创建一个DiskFileItemFactory工厂 DiskFileItemFactory factory = new DiskFileItemFactory(); 2.2 创建一个文件上传解析器 ServletFileUpload upload = new ServletFileUpload(factory); 2.3 解决上传文件名的中文乱码 upload.setHeaderEncoding("UTF-8"); 2.4 使用ServletFileUpload解析器解析上传数据,解析结果返回的是一个List<FileItem>集合,每一个FileItem对应一个Form表单的输入项 List<FileItem> list = upload.parseRequest(request); 2.5 创建一个Map集合用于封装表单项的数据 Map<String,String> map = new HashMap<String, String>(); 2.6 迭代FileItem表单项 for(FileItem item : list){ 2.6.1 //如果FileItem中封装的是普通表单项 if(item.isFormField()){ //获取表单项的字段名(name属性) String name = item.getFieldName(); //得到字段值,并解决中文乱码问题 String value = item.getString("UTF-8"); //向Map中赋值 map.put(name,value); } 4000 2.6.2 //如果FileItem中封装的是文件表单项 else{ //得到长传的文件名称 String filename = fileItem.getName(); /*处理文件名,去除上传文件名的路径部分,只保留文件部分 注意:不同的浏览器提交的文件名是不一样的,有些浏览器提交上来的文件名是带有路径的,如: c:\a\b\1.txt, 而有些只是单纯的文件名,如:1.txt*/ if(filename!=null){ filename = FilenameUtils.getName(filename); } //获取文件的类型 String extension = FilenameUtils.getExtension(filename); //限制上传文件的类型不能是jsp和exe类型 if(!("jsp".equals(extension) || "exe".equals(extension))){ //文件上传 fileItem.write(new File(storeDirectory,filename)); //删除临时文件 fileItem.delete(); } //将文件表单项的name和value保存到map中 map.put(fileItem.getFieldName(),filename); } } }
相关文章推荐
- 【java实现web文件无刷新上传】
- JAVA应用XFire框架来实现WebServie的大文件传输功能之二(上传)
- java web 一行代码实现文件上传下载
- 【java实现web文件无刷新上传】
- java实现web文件无刷新上传(二)
- java通过struts实现web中的文件上传
- java实现web文件无刷新上传(一)
- Java Web 学习笔记之三: HttpURLConnection 模拟表单上传文件
- java web 利用Struts1实现上传多个文件
- Web 在线文件管理器学习笔记与总结(19)上传文件
- java web 利用 commons-fileupload-1.2 实现文件上传 解决 中文乱码& 非文件属性的读取
- JavaWeb中struts2实现文件上传下载功能实例解析
- WebUploader插件上传大文件单文件和多文件JAVA版使用总结
- Java for Web学习笔记(九):Servlet(7)上传文件
- !JAVA学习提高之---- Struts实现多文件上传
- javaweb之文件上传总结
- WCF 学习总结7 -- 流模式(Streaming)实现文件上传
- java Web && 文件上传--简单实现
- javaweb 简单的文件上传动态添加上传文件数量[从学习到工作(六)]
- Java网络编程实践和总结 --- 基于TCP的Socket编程之实现文件上传和下载服务