struts2学习笔记(10)——使用fileupload进行文件上传

文件上传在web应用中很常见的,struts2提供了强大的文件上传功能,实际上文件上传是由commons-fileupload这个组件完成的。

在文件上传中,有2点非常重要:

1.表单提交方法为post

2.表单编码方式为multipart/form-data

如果不改编码方式,将使用默认的application/x-www-form-urlencoded

首先不使用任何组件,来看看在文件上传中常出现的问题。

为此,必须先停止使用struts2框架,在web.xml中将以下内容注释起来,

 

 

在webroot下新建目录upload,新建upload.jsp

 


result.jsp文件内容

 

 



注意在实际开发中并不会这么写jsp文件,在这里只是为了便于演示。

 

 

 

在某些浏览器中,上传文件后将显示路径+文件名(如IE),而有些仅仅只显示文件名(如opera)

使用fileupload来完成文件上传

新建upload2.jsp

 

 

 



表单中包含2个文本域和2个文件域。

 

表单提交到FileUpload这个servlet,因此接下来新建一个servlet。

在这个servlet中需要使用到fileupload这个组件。

使用fileupload,需要从DiskFileItemFactory这个类开始,在这个类中有两个方法:

setRepository(File repository)      

    Sets the directory used to temporarily store files that are larger than the configured size threshold.

    设置一个目录,临时地存储超过设置大小的文件

setSizeThreshold(int sizeThreshold)    

    Sets the size threshold beyond which files are written directly to disk.

    设置将低于某个大小的文件直接写到磁盘中

另外一个重要的类是ServletFileUpload,这个类完成了文件上传的最重要的操作。

parseRequest()方法将返回一个List,该List的类型为FileItem,这里面包含了从客户端传过来的所有数据。

需要注意的是FileItem并不只是文件域,而包含了表单中所有的字段,即示例中username和password也包含在FileItem中。

在FileItem中包含一个方法isFormField(),该方法用来判断该字段是否为普通字段。

因此可以用它来区分普通字段和文件字段。

 

 

 

 

在这里我们是使用的IO操作来完成的文件上传,在FileItem中包含一个方法

    write(java.io.File file)

        A convenience method to write an uploaded item to disk.

        一个方便的方法来写入一个上传的项目到磁盘中

因此我们可以将上面代码中被注释包括起来的代码替换成

 

   

这样就完成了文件上传的基本示例。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值