通过commons-fileupload实现文件上传
来源:互联网 发布:经传多盈软件 编辑:程序博客网 时间:2024/06/07 18:28
页面端执行文件上传时,表单的类型为enctype="multipart/form-data"。这时,浏览器发送请求时,将把文件数据附带在http请求消息体中,并使用MIME协议对上传的文件进行描述,以方便接收方对上传数据进行解析和处理。
当客户端想服务器端发送请求后,tomcat(本人用的tomcat)会将请求强转成HttpServletRequest对象。服务端处理,会从请求中获取数据(Request对象提供了一个getInputStream方法, 通过这个方法可以读取到客户端提交过来的数据)进行解析。分离出文本表达和上传文件。但由于用户可能会同时上传多个文件,在servlet端编程直接读取上传数据,并分别解析出相应的文件数据是一项非常麻烦的工作.
这里我使用了Apache开源的上传软件包。这个软件包,会将复杂表单元素看做一个FileItem对象。
采用默认临界值和系统临时文件夹构造文件项工厂对象。
DiskFileItemFactory factory = newDiskFileItemFactory();
factory.setSizeThreshold(1024*1024);//临界值
factory.setRepository(newFile(path,"upload"));//临时文件夹
采用参数指定临界值和系统临时文件夹构造文件项工厂对象。
public DiskFileItemFactory(intsizeThreshold,File repository)
ServletFileUpload 负责处理上传的文件数据,并将表单中每个输入项封装成一个FileItem对象中。
ServletFileUpload upload = newServletFileUpload(factory);
解析request对象,并把表单中的每一个输入项包装成一个fileItem 对象,并返回一个保存了所有FileItem的list集合。
List<FileItem> list =(List<FileItem>)upload.parseRequest(request);
对list进行迭代,每迭代一个FileItem对象,调用其isFormField方法判断是否是上传文件
String name = item.getFieldName();//获取表单的属性名字 字段名
if(item.isFormField()){//获取的表单信息是普通的文本信息
//获取用户具体输入的字符串,名字起得挺好,因为表单提交过来的是字符串类型的
Stringvalue = item.getString() ; //获取表单的属性值 字段值
}else{//为上传文件
InputStreamis = item.getInputStream();//得到数据输入流
}
然后就是对流的读写操作了。
- Struts2通过commons-fileupload实现文件上传
- Struts2通过commons-fileupload实现文件上传
- Struts2通过commons-fileupload实现文件上传
- 通过commons-fileupload实现文件上传
- commons-fileupload 实现文件上传
- Commons-Fileupload 实现文件上传
- Commons-FileUpload实现文件上传
- commons-fileupload实现文件上传
- Struts2之通过commons-fileupload实现文件上传
- Struts 2通过Commons FileUpload文件上传
- commons-fileupload.jar实现文件上传
- 用commons-fileupload-1.2 实现文件上传
- 使用commons-fileupload实现文件上传
- Apache Commons fileUpload实现文件上传
- Apache Commons fileUpload实现文件上传
- Apache Commons fileUpload实现文件上传
- 用commons-fileupload-1.2 实现文件上传
- commons-fileupload-1.2 实现文件上传
- 解决sql查询时间缺失
- centos 如何关闭防火墙?
- 函数
- js中数组的基本操作
- Spirng+redis 2、实现RedisConfiguration
- 通过commons-fileupload实现文件上传
- SSO单点登录初探
- 技术方向的选择
- android5.1 增加ethernet设置(DHCP与Static ip)
- springmvc登录拦截器访问报错 SyntaxError: expected expression, got '<'
- 使用OAuth2的SSO分析
- 大数模板
- RocketMQ实战 (一)
- python写算法题:leetcode: 12. Integer to Roman