commons-fileupload.jar文件上传基础知识

1、文件上传
响应方式可向服务器上传文本数据,但比较麻烦,而且无法上传图片资源。如果文件数据比较大,或非文本数据,一般使用文件上传。
文件上传就是将客户端资源通过网络传递给服务器,其本质就是IO流的操作,客户端发送数据流,服务端通过流读取数据,对数据进行解析得到上传文件的内容,然后保存在服务器端。
2、数据处理
2.1客户端

(1)、使用post方法(method=“post”),因提交的数据会比较大; 
(2)、必须使用name属性; 
(3)、在input标签中设置encType属性,如encType=”Multipart/form-data”。
2.2服务器端
(1)、用request对象获取请求信息。 
(2)、通过request的getInputStream()方法,可以读取到所有请求正文消息。 
(3)、操作IO流,将所需要的信息保存在服务器端。
3、commons-fileupload.jar包
commons-fileupload.jar通常和commons-io.jar包一起使用的。用来操作文件上传。该包封装了很多上传的功能,简化了上传代码的复杂性,其核心类如下:
3.1 DiskFileItemFactory类
DiskFileItemFactory类用于设置文件缓冲区大小以及临时保存位置;
setSizeThreshold( int sizeThreshold )用于设置缓冲区大小,如果不设置,sizeThreshold大小为:10240(10KB);
setRepository( File repository );用于设置临时文件的保存位置,如果不设置,repository为系统的临时目录; 
DiskFileItemFactory()用于构造一个缓冲区大小为sizeThreshold和临时文件为目录为repository的文件项工厂; 
DiskFileItemFactory( int SizeThreshold , File repository )用于构造一个带指定参数的文件项工厂类。
3.2 ServletFileUpload类
ServletFileUpload类实现上传的一些程序集合; 
ServletFileUpload( DiskFileItemFactory factory )构造函数,使用factory指定的缓冲区大小和临时文件。 
public List<FileItem> parseRequest ( HttpSevletRequest request )解析request对象,得到所有的上传项,返回一个List<FIleItem>集合,其中每个FileItem就相当于一个上传项; 
boolean isMultipartContext ( HttpServletRequest request )用于判断是否为上传项,如果是就返回true; 
setFileSizeMax(long fileSizeMax)设置单个文件的上传的大小上限; 
setSizeMax(long sizeMax)设置总文件上传的大小上限。 
setHeaderEncoding( Charset charset)使用charset的编码进行请求进行处理,可以解决文件上传中的中文乱码的问题。
3.3FileItem类
isFormField()用于判断是否为上传组件;
String getFieldName()用于获取组件的名称,即<input>标签中的name属性。 
String getName()获取上传文件中的名称,浏览器不同,得到的结果可能不一同 
getString()和getString(Charset charset) 用于获取非上传组件的内容,两者的区别是一个使用默认编码,一个使用指定编码; 
getInputStream()用于获取上传文件内容的输入流,使用文件复制就能完成文件的上传。 
delete()用于删除临时文件。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大浪淘沙胡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值