网上找的一个比较详细的Struts2文件上传的解说但在实际中还要注意一些问题网页相关 2010-04-04 14:26:34 阅读80 评论0 字号:大中小 订阅 1.如果用到了spring的方法注入的话一定不要忘了加 scope="prototype"这样每次访问act 2.上传时出现的错误信息是放在request范围内的如果出现错误返回的input页面不是上传文件的form页面那么可以把错误信息提取出来 String error = this.getFieldErrors().get("file").toString();(file指struts2 file标签里 name的名字) 放在request,session。。范围内然后在input指定的页面显示错误信息。 3.文件大小和类型的限制是通过Struts2拦截器实现的你只需要在上传的act <param name="allowedTypes"> 但是有一点要注意Struts2默认文件上传最大为2M即便你设置了<param name="maximumSize">5242880</param> 当上传的文件大于2M时候也会出错的这时要设置另外一个常量<constant name="struts.multipart.maxSize" value="1000000000"/> 要让他的value设置的比你限定上传最大值要大一点。 以上是文件上传要注意的几点其实文件上传看起来比较难实际上比较简单,而文件下载就有点麻烦了遇到了很恼人的编码和乱码问题。 1.文件下载的act public InputStream getInputStream() throws Exception 有一点要注意struts2提供了一个 ServletActionContext.getServletContext().getResourceAsStream(filePath);方 法根据路径返回输入流,但是这个方法和servletContext有关,当你把下载的文件放在项目的根目录中才可以否则会出错的,最保险的办法就是根据 文件路径找到这个文件然后在转化成输入流返回。 配置: <act 2.编码,当文件名是中文时 String downFileName = new String(downFileName.getBytes("ISO8859-1"), "utf-8"); getResponse().setHeader( setHeader是设置http请求的头是MIME 协议的拓展可以实现以下功能 *希望某类或者某已知MIME 类型的文件(比如: .gif; .txt;*.htm)能够在访问时弹出"文件下载"对话框 |
|