Struts2文件上传以及下载拦截器的应用

在文件的上传以及下载中有着一个fileUpload拦截器,这一次的内容大体上就是针对该拦截器在开发中如何实现文件上传下载功能做一个简单说明。在正式说明之前,还需要各位在web项目中导入支持文件上传下载和IO输出输入的两个jar包。他们的名字为commons-fileupload-1.2.1.jar 和 commons-io-1.4.jar ,这两个包都可以在apache网站上下载。
首先,在上传文件表单中属性值或许值得一提:method,以及 enctype 这两个属性的属性值是非常值得注意的一个方面,其中,method="post" enctype="multipart/form-data" 这两个属性值是必须的,只有这样在Form中上传文件才会起作用。
然后在定义文件上传的过程中我们需要定义 上传文件集合、上传文件名集合以及上传文件内容类型集合,当然,这是有多个文件一起进行上传的过程中我们所需要定义成List或者是数组的形式,至于单个只需要将其设置成字符串即可。
还有一个方面,文件上传之后他们会被存放在哪里呢?
这里我们必须在定义一个文件夹,并且在webroot这个目录下也定义一个这个文件夹才能进行成功的上传。

定义文件名以及文件内容变量名称时,要记住它是一个固定的变量名称:fileFileName 以及 fileContentType 这两个就是固定的变量名了。如果你将这个变量名进行变化就会发现这两个变量值都会变成NUll。

在进行上传的过程中,主要就是进行输入输出流到文件流之间的变化进行。
我们在文件进行上传的时候还可以进行设置制定文件的上传格式,让它只上传特定类型的文件。这里笔者提供一个例子:

设置制定类型为 txt xml

这样在设置的时候,我们就需要在struts.xml 文件中添加一个拦截器了,
<interceptor-ref name="fileUpload">
<param name="allowdTypes">text/plain,application/xml</param>
</interceptor-ref>
当然,在使用这个的时候,如果需要进行使用默认的拦截器,那么就一定需要对拦截器的书写顺序进行注意,这个一定要写在默认拦截器的前面。

因为struts2中如果某个拦截器执行拦截时发现自己已经执行过,第二个乃至之后同名的拦截器都不会进行执行。
而默认拦截器是会上传所有的文件类型,而我们进行重写就会发现不同的文件类型。

下载中要注意的就是在struts.xml中,必须要对下载文件类型进行定义,下载文件处理方法进行定义,下载文件输出流定义。

在文件处理方法中,要注意contentDisposition 是制定下载文件处理方式,但是如果其定义的值把前面的"attachment"去掉,则下载方式不是以附件的形式进行下载,而是以下载链接的形式进行下载。如果单机该链接,则会把下载文件的内容显示在浏览器中。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,798评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,888评论 25 709
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 13,902评论 6 13
  • 1.感恩小伙伴给我定制了便宜的体检套餐,满足了我和婆婆的体检需求。 2.感恩又是一个好天气,能带着宝宝老婆婆一起体...
    白马康珠阅读 1,261评论 0 2
  • 我总跟朋友说,我现在处于一种迫切想挣脱孤独而又十分享受一个人生活的矛盾感中。 一年多了,工作性质也好,离家居住也好...
    娜肥肥阅读 3,150评论 0 6