1.文件上传的概述和注意事项
* 把客户端的文件上传到服务器端。
* FileUpload的组件
* 创建工厂类
* 创建能解析request类
* 解析request,返回的List<FileItem>,自己循环,获取到表单的内容和文件上传的内容。
* 如果获取到上传文件的名称和上传文件的输入流,使用io流完成文件的读写操作。
2.企业中实现文件上传的几种方式?
* jspSmartUpload(主要应用 JSP model1 时代)
* fileupload (Apache commons项目中一个组件)
* Servlet3.0 集成文件上传 Part类
3.客户端三个注意事项
* method="post"
* enctype="mutlipart/form-data"
* <input type="file" name="myfile">
4.Struts2框架的使用拦截器完成了文件上传,并且底层使用也是FileUpload开源的组件。
* 提供 FileUpload 拦截器,用于解析 multipart/form-data 编码格式请求,解析上传文件的内容
* fileUpload拦截器 默认在 defaultStack 栈中, 默认会执行的
* 在Action中编写文件上传,需要定义三个属性
> 文件类型File ,属性名与表单中file的name属性名一致.
> 字符串类型String , 属性名:前段是name属性名一致 +ContentType;
> 字符串类型String , 属性名:前段是name属性名一致+FileName;
> 最后需要为上述的三个属性提供set方法。
> 可以通过FileUtils提供 copyFile 进行文件复制,将上传文件 保存到服务器端
5.文件上传中存在的问题
* 先配置input逻辑视图
* 在页面中显示错误信息
* 文件上传的总大小默认值是2M,如果超过了2M,程序会报出异常。可以使用<s:actionError>来查看具体信息!
> 解决总大小的设置,找到常量:
* struts.multipart.parser=jakarta -- 默认文件上传解析器,就是FileUpload组件
* struts.multipart.saveDir= -- 文件上传的临时文件存储目录
* struts.multipart.maxSize=2097152 -- 文件上传的最大值(总大小),默认是2M
> 可以在struts.xml中设置常量,修改文件上传的默认总大小!!!
* <constant name="struts.multipart.maxSize" value="5000000"></constant>
6.还可以通过配置拦截器来设置文件上传的一些属性
* 先在<action>标签中引入文件上传的拦截器
<interceptor-ref name="defaultStack">
<!-- 设置单个上传文件的大小 -->
<param name="fileUpload.maximumSize">2097152</param>
<!-- 设置扩展名 -->
<param name="fileUpload.allowedExtensions">.txt</param>
</interceptor-ref>
7.提示信息做国际化
* 在核心包下找到:struts2-core-2.3.15.3.jar/org.apache.struts2/struts-messages.properties
* 编写资源包
> message_zh_CN.properties文件
> key值:struts.messages.error.file.too.large 等
* 在struts.xml中开启全局国际化常量:<constant name="struts.custom.i18n.resources" value="message"></constant>
8.多文件上传,在JSP的页面上提供多组文件上传的输入框,选择多个文件,上传。
* 在Action中还是编写三个属性
> 属性需要是数组或者List集合,这样就可以完成多文件上传了。
> 注意:是数组或者List集合
private File [] upload; // 代表上传的文件
private String [] uploadContentType; // 代表文件的类型
private String [] uploadFileName; // 上传文件的名称
> 提供属性的set方法
9.上传的JSP页面
<form action="${ pageContext.request.contextPath }/xxx.action" method="post" enctype="multipart/form-data">
文件上传:<input type="file" name="upload" /><br/>
<input type="submit" value="上传" />
</form>
Struts2的文件上传
最新推荐文章于 2018-01-29 19:46:28 发布