struts2中上传与下载文件

来源:互联网 发布:免费网络宣传 编辑:程序博客网 时间:2024/05/26 09:53
一、文件上传和下载
9.1 文件上传
1)三个条件: 
表单有file
post提交
enctype="multipart/form-data"


2)在Action中接收文件内容
File attach;   (attach是file表单的name属性)
String attachContentType;  文件类型
String attachFileName;   文件名称            这些文件名  文件类型都是固定的
细节:
修改上传大小

<!-- 修改默认文件上传大小 -->
<constant name="struts.multipart.maxSize" value="100000000"></constant>
修改允许上传的文件类型和文件后缀

<action name="upload" class="gz.itcast.h_upload_down.UploadAction" >
<!-- 往FileUploadInterceptor拦截器的属性注入值(调用setter方法) -->

<interceptor-ref name="defaultStack">
<!-- 改变当前文件上传拦截器的允许文件类型 -->
<param name="fileUpload.allowedTypes">image/jpeg,image/jpg</param>
<!-- 允许的文件后缀 -->
<param name="fileUpload.allowedExtensions">jpg,jpeg,gif</param>
<!-- 如果以上配置都写了,那么取他们的交集  -->
</interceptor-ref>

<param name="savePath">e:/images/</param>
<result>/login.jsp</result>
<result name="input">/error.jsp</result>
</action>


9.2 文件下载

视图类型一定是stream类型

<action name="down_*" class="gz.itcast.h_upload_down.DownAction" method="{1}">
<param name="serverPath">e:/images/</param>
<result name="list">/listFile.jsp</result>
<!-- 文件下载的关键: 视图类型一定是stream -->
<result name="down" type="stream">
<!--  往StreamResult类中的属性注入内容 -->
<!-- 返回给浏览器的文件类型。返回通用的二进制 -->
<param name="contentType">application/octet-stream</param>
<!-- 返回给浏览器的输入流 -->
  <param name="inputName">inputStream</param>
  <!--  告诉浏览器的方式下载资源
  ${name}: 获取Action中的getName()方法的数据
  -->
  <param name="contentDisposition">attachment;filename=${name}</param>
  <!-- 缓存大小 -->
    <param name="bufferSize">1024</param>
</result>
</action>


在Action对象中提供一个对应的获取输入流的方法



//需要提供给struts写出数据的输入流
public InputStream getInputStream(){
try {
FileInputStream fis = new FileInputStream(new File(serverPath+name));
return fis;
} catch (FileNotFoundException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}


public String getName() {
return name;
}
0 0
原创粉丝点击