松鼠的博客

导航

统计

java文件上传组件

1.文件上传组件FileUpload

  1)java提供了文件上传的工具包

    需要引入:commons-fileupload-1.2.1.jar(文件上床组件核心包)

         commons-oi-1.4(封装了对文件处理相关工具类)

  2)核心api:

    ServletFileUpload文件核心工具类;

    FileItemFactory->DisFileItemFactory文件上传工厂类

  3)文件上传步骤:

    1.jsp页面:

      这里要注意:form中encType:multipart/form-data:表示的是表单表单上传

            input type="file"满足两个条件就能上传文件了

          三个值:application/x-www-form-urlencoded,multipart/form-data,text/plain

          三个值区别:application/x-www-form-urlencoded  模式方式

                multipart/form-data          文件模式

                text/plain                    

    2.Servlet上传类的书写:

      1)创建文件上传核心工具类ServletFileupload->创建FileItemFactory,DisFileItemFactory文件上传工厂-》设置核心类

          setFileSizeMax(30*1024*1024);setFileSizeMax(30*1024*1024);setHeaderEncoding("UTF-8");

 

      3)将request的上传的参数变为FileItem类型的List集合,之后针对FileItem做处理

    3.例子:

 

 

// 1. 创建工厂对象
FileItemFactory factory = new DiskFileItemFactory();
// 2. 文件上传核心工具类
ServletFileUpload upload = new ServletFileUpload(factory);
// 设置大小限制参数
upload.setFileSizeMax(10*1024*1024); // 单个文件大小限制
upload.setSizeMax(50*1024*1024); // 总文件大小限制
upload.setHeaderEncoding("UTF-8"); // 对中文文件编码处理

// 判断
if (upload.isMultipartContent(request)) {
// 3. 把请求数据转换为list集合
List<FileItem> list = upload.parseRequest(request);
// 遍历
for (FileItem item : list){
// 判断:普通文本数据
if (item.isFormField()){
// 获取名称
String name = item.getFieldName();
// 获取值
String value = item.getString();
System.out.println(value);
}
// 文件表单项
else {
/******** 文件上传 ***********/
// a. 获取文件名称
String name = item.getName();
// ----处理上传文件名重名问题----
// a1. 先得到唯一标记
String id = UUID.randomUUID().toString();
// a2. 拼接文件名
name = id + "#" + name;

// b. 得到上传目录
String basePath = getServletContext().getRealPath("/upload");
// c. 创建要上传的文件对象
File file = new File(basePath,name);
// d. 上传
item.write(file);
//item.delete(); // 删除组件运行时产生的临时文件
System.out.println("文件上传成功");
System.out.println(basePath);
}
}
}
} catch (Exception e) {
e.printStackTrace();
}

参考文章:http://blog.ncmem.com/wordpress/2023/09/11/java%e6%96%87%e4%bb%b6%e4%b8%8a%e4%bc%a0%e7%bb%84%e4%bb%b6/

欢迎入群一起讨论

 

 

posted on   Xproer-松鼠  阅读(13)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2020-09-11 帝国CMS实现word图片自动转存
2020-09-11 dedecms实现word图片自动转存
2020-09-11 eWebEditor实现word图片自动转存
2020-09-11 wangEditor实现word图片自动转存
2020-09-11 xhEditor实现word图片自动转存
2020-09-11 TinyMCE实现word图片自动转存
2020-09-11 FCKEditor实现word图片自动转存
点击右上角即可分享
微信分享提示