Struts2学习笔记
1. Struts2文件上传
1.1表单三要素
1)表单必须以POST方式提交,因为GET方式提交会有大小的限制(大约2000个字符),对POST,无大小限制要求。
2)表单必须加入enctype="multipart/form-data"表示上传的文件,以随着请求体,经过编码后,一同传入服务器。
3)每个表单项,必须取一个名字,因为服务端便于能过名字收集信息。
这里使用Struts2的标签:
<s:form action="upload"method="post"enctype="multipart/form-data">
<s:textfieldlabel="用户名"name="username"/>
<s:filelabel="上传文件"name="upload"/>
<s:submitvalue="提交"/>
</s:form>
1.2框架自身有fileUpload文件上传拦截器
1)在默认栈中,有一个fileUpload文件上传拦截器,无文件下载拦截器(要程序员自己处理)。org.apache.struts2.interceptor.FileUploadInterceptor(框架的拦截器)
2)在默认情况下,fileUpload拦截器只能上传不超过2M(默认)的数据,而且struts2框架的上传拦截器底层就是使用jakarta common fileupload开源组件来完成上传的,和传统Web应用上传一样。
1.3 fileUpload拦截器,自动注入三个参数
privateFile upload;//上传临时文件(fileUpload拦截器传入的参数)
privateString uploadContentType;//上传文件的类型(fileUpload拦截器传入的参数)
privateString uploadFileName;//上传文件的真实文件名(fileUpload拦截器传入的参数)
注意:upload和表单项<s:file>中的name属性一致;upload拼上 contentType 首字母c要大写。
1.4上传文件细节
1)上传成功的时候临时文件要删除
//关闭资源,并删除临时文件,应在finally中处理的
if(is !=null) is.close();
if(os !=null) os.close();
if(upload.exists())upload.delete();
2)上传文件总大小限制(上传多个文件时加起来的大小)(框架默认是2M)
在struts.xml中配置:<constantname="struts.multipart.maxSize" value="20971520"/>
或在struts.properties中配置struts.multipart.maxSize=20971520
超过限制抛异常:
org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException
3)上传文件单个大小限制
<!-- 设置[单]个上传文件不得超过5M -->
<param name="maximumSize">5242880</param>
4)上传文件扩展名限制
<!--设置上传文件的扩展名-->
<paramname="allowedExtensions">.jpg,.txt</param>
5)上传文件类型限制
<!--设置上传文件的类型-->
相关新闻>>
- 发表评论
-
- 最新评论 更多>>