使用FileUpload组件完成文件下载
来源:互联网 发布:网络发行许可证 编辑:程序博客网 时间:2024/06/03 13:22
首先引入jar包:
commons-fileupload-1.2.1.jar 文件上传组件核心jar包
commons-io-1.4.jar 封装了对文件处理的相关工具类
jsp核心代码:
<form name="form_test" action="${pageContext.request.contextPath }/upload" method="post" enctype="multipart/form-data"> 用户名:<input type="text" name="userName"> <br/> 文件: <input type="file" name="file_img"> <br/> <input type="submit" value="注册">
首先构思一下完成一个servlet需要一下几步:
1.创建一个文件上传工厂类
2.创建文件上传核心对象
3.判断表单视为为文件上传表单
4.把请求数据转换为FileItem的集合
5.遍历集合
6.判断是普通表单元素还是文件元素
servlet核心代码实现:
import java.io.BufferedReader;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.UnsupportedEncodingException;import java.util.List;import java.util.UUID;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.FileItemFactory;import org.apache.commons.fileupload.FileUploadException;import org.apache.commons.fileupload.disk.DiskFileItemFactory;import org.apache.commons.fileupload.servlet.ServletFileUpload;import org.apache.commons.io.FileUtils;public class UploadServlet extends HttpServlet { // upload目录,保存上传的资源 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { /*********文件上传组件: 处理文件上传************/ try { // 1. 文件上传工厂 FileItemFactory factory = new DiskFileItemFactory(); // 2. 创建文件上传核心工具类 ServletFileUpload upload = new ServletFileUpload(factory); //这个地方可以不传参数,然后使用set方法设置 // 一、设置单个文件允许的最大的大小: 30M upload.setFileSizeMax(30*1024*1024); // 二、设置文件上传表单允许的总大小: 80M upload.setSizeMax(80*1024*1024); // 三、 设置上传表单文件名的编码 // 相当于:request.setCharacterEncoding("UTF-8"); upload.setHeaderEncoding("UTF-8"); // 3. 判断: 当前表单是否为文件上传表单 if (upload.isMultipartContent(request)){ // 4. 把请求数据转换为一个个FileItem对象,再用集合封装 List<FileItem> list = upload.parseRequest(request); // 遍历: 得到每一个上传的数据 for (FileItem item: list){ // 判断:普通文本数据 if (item.isFormField()){ // 普通文本数据 String fieldName = item.getFieldName(); // 表单元素名称 String content = item.getString(); // 表单元素名称, 对应的数据 //item.getString("UTF-8"); 指定编码 System.out.println(fieldName + " " + content); } // 上传文件(文件流) ----> 上传到upload目录下 else { // 普通文本数据 String fieldName = item.getFieldName(); // 表单元素名称 String name = item.getName(); // 文件名 String content = item.getString(); // 表单元素名称, 对应的数据 String type = item.getContentType(); // 文件类型 InputStream in = item.getInputStream(); // 上传文件流 /* * 四、文件名重名 * 对于不同用户a.txt文件,不希望覆盖! * 后台处理: 给用户添加一个唯一标记! */ // a. 随机生成一个唯一标记 String id = UUID.randomUUID().toString(); // b. 与文件名拼接 name = id +"#"+ name; // 获取上传基路径 String path = getServletContext().getRealPath("/upload"); // 创建目标文件 File file = new File(path,name); // 工具类,文件上传 item.write(file); item.delete(); //删除系统产生的临时文件 System.out.println(); } } } else { System.out.println("当前表单不是文件上传表单,处理失败!"); } } catch (Exception e) { e.printStackTrace(); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doGet(request, response); }}
0 0
- 使用FileUpload组件完成文件下载
- 使用Commons-fileupload组件实现文件下载
- 使用FileUpload组件上传文件
- 使用FileUpload组件上传文件
- 使用FileUpload组件上传文件
- 使用FileUpload组件上传文件
- 使用FileUpload组件上传文件
- 使用FileUpload组件上传文件
- 使用FileUpload组件上传文件
- 使用FileUpload组件上传文件
- 使用FileUpload组件上传文件
- 使用FileUpload组件上传文件
- 文件上传与下载(FileUpload组件)
- 文件的下载之fileupload组件
- JAVA使用apache commons-fileupload组件完成文件上传到服务器功能
- 文件上传组件 FileUpload组件的使用
- SSH框架下使用Commons FileUpload控件完成多文件上传与下载
- 使用FileUpload组件实现文件上传
- 2017浙江省选一试第一天游记
- 类模板模拟实现STL中Vector
- nginx配置文件nginx.conf中文注释
- 设计模式(六)适配器模式
- hdu 2102
- 使用FileUpload组件完成文件下载
- [js]悬浮显示二级菜单的实现
- Git 学习笔记
- 类与类关系的UML图与代码表现
- yum找不到安装包
- 一道坑爹的选牌题目
- 基础sql语句总结(mysql)
- 【NOI2014】数学题(math)
- 快速排序