struts2中的文件上传和下载

struts2中的文件上传和下载:

1.首先导入commons-fileupload-1.2.1.jar和commons-io-1.4.jar两个jar包

2.其次JSP页面中的文件上传控件所在的form必须设置属性enctype="multipart/form-data"

3.再次,struts2中文件上传将底层高度封装了。在使用时只需要在ACTION中添加三个字段(其中

List<File> files为必填项),并为其设置get set 属性。

4.接下来你要做的只是将files中的文件对象保存到磁盘即可。

这样就完成了文件上传。如果需要控制上传文件,则需要在struts.xml文件中配置struts2内置的文件上

传拦截器即可。
<interceptor-ref name="fileUpload">
<param name="maximumSize">2MB</param>
<param name="allowedTypes">text/html,image/jpeg</param>
</interceptor-ref>

<interceptor-ref name="basicStack"/>
需要注意的是<interceptor-ref name="basicStack"/>不能省,因为如果只配置fileUpload拦截器,则其

他的拦截器将失效。

而文件下载可能相对比较简单,具体操作如下:

1.在ACTION中建立一个返回类型为InputStream的方法。如:
public InputStream getTargetFile() throws Exception
{
return ServletActionContext.getServletContext().getResourceAsStream(String 文件的路

径);
}
处理原理为:所有的下载文件都是将一个二进制的流写入到HttpResponse中去。在Action类中定义一个

InputSream类型的二进制流,在Result返回时返回给用户。

2.在struts.xml中配置ACTION信息
<action name="downloadFile" class="com.jpleasure.ImageUploadAction">
<result name="success" type="stream">
<param name="contentType">image/pjpeg</param>
<param name="inputName">imageInputStream</param>
<param name="contentDisposition">attachment;filename="image.jpg"</param>
<param name="bufferSize">1024</param>
</result>
</action>
ContentType表示下载文件的类型。
InputName表示Action类中用来下载文件的字段的名字。
ContentDisposition用来控制文件下载的一些信息,包括是否打开另存对话框,下载文件名等。
BufferSize表示文件下载时使用的缓冲区的大小。


struts.xml配置示例:
<action name="save" class="com.globalzt.struts2.action.StudentAction" method="save">
<result name="success">/studentSuccess.jsp</result>
<result name="error">/studentManagement.jsp</result>
<result name="input">/studentManagement.jsp</result>
<!-- 配置struts2中写好的拦截器,所以name名称不能随便写 -->
<interceptor-ref name="fileUpload">
<param name="allowedTypes">image/bmp,image/gif,image/jpeg,image/png</param>
<param name="maximumSize">409600</param>
</interceptor-ref>
<!-- 这句话不能省,否则将忽略其他的拦截器 -->
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>
<action name="download" class="com.globalzt.struts2.action.DownloadAction" method="download">
<!-- 这里可以添加需要向ACTION中传递的值,方式为注入:name属性的名称自己定义 -->
<!-- <param name="inputPath">\files\Winter.jpg</param> -->
<result name="success" type="stream">
<!-- 接下来的参数为设置HTTP头信息,在配置的时候要注意name的名称是定死的,不能擅自更改。参见:struts2-core-2.0.11下的org.apache.struts2.dispatcher.StreamResult类 -->
<param name="inputName">inputStream</param>
<!-- 使用经过转码的文件名作为下载文件名,downloadFileName属性对应action类中的方法 getDownloadFileName() -->
<param name="contentDisposition">attachment;filename="${downloadFileName}"</param>
<param name="bufferSize">4096</param>
</result>
</action>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值