Struts文件下载

 

这里需要除了Struts本身需要的包以外,还有需要的包有:

commons-fileupload-1.2.1.jar

commons-io-1.4.jar

1 下载表单

我们当然可以读出数据库的文件名,可以对文件名进行处理,比如加上日期或者uuid使其唯一,那么便可以唯一标识下载文件夹中的文件。

样式1:
<form action="downLoad" method="post">
    <input type="hidden" value="<s:property value="#d.filename" />" name="fileName"/>
    <button type="submit">下载</button>
</form>

样式2:
<a href="downLoad?filename=<s:property value="#d.filename" />">下载</a>

样式1采用了post提交方式,而样式2中的a标签我们知道是get方式。
我们知道struts拦截器处理乱码的时候,对post有效,对get无效。需要在tomcat里面设置才对get有效。
当然,你可以把按钮的样式做成链接的形式。

 

2 文件下载的Action

public class FileDownLoadAction extends ActionSupport
{

 private String fileName;

 public InputStream getInputStream() throws IOException
 {
  // 文件存放路径
  String path = getRelPath() + "uploads\\" + fileName;
  
  // 解决中文文件名的保存名乱码
  fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
  return new FileInputStream(path);
 }

 public String execute() throws Exception
 {
  return "success";
 }

 public String getRelPath()
 {
  String path = "";
  path = ServletActionContext.getServletContext().getRealPath("/");
  return path;
 }
 /******************getter,setter省略**********************/
}

3.Struts.xml

<action name="downLoad" class="com.xy.FileDownLoadAction">
    <result name="success" type="stream">
        <param name="contentType">application/msword</param>
 <param name="inputName">inputStream</param>
 <param name="contentDisposition">attachment;filename="${fileName}"</param>
 <param name="bufferSize">1024</param>
    </result>
</action>

 

我们看到有contentType属性名,它是用来对文件类型进行限制。

关于contentType的对应表,参见http://blog.csdn.net/woshixuye/article/details/7331632

 

 

 

时间: 2024-09-12 16:32:40

Struts文件下载的相关文章

struts文件下载 不显示保存框

问题描述 这是我的action的代码:HttpServletResponse response = ServletActionContext.getResponse(); OutputStream out = null; FileInputStream in = null; try{response.setContentType("application/octet-stream;charset=UTF-8");String fileName = URLEncoder.encode(n

stuts下载byte-struts文件下载,下载byte[]二进制,被直接打开的问题

问题描述 struts文件下载,下载byte[]二进制,被直接打开的问题 最近在改一个原来的邮件系统,原来系统的附件是二进制,我从数据库拿出来只能是个byte[],我将其用new ByteArrayInputStream(unZip)转化为intputStream,然后通过struts2下载,以为不是FileInputStream,在客户端全部都被直接打开了,各位大神有什么解决办法 配置文件: image/pngimage/jpegimage/giftext/plain 4096filename

javaweb struts-新手求教!!关于使用struts 下载csv文件的问题 急

问题描述 新手求教!!关于使用struts 下载csv文件的问题 急 我配置好struts后,点击下载的时候页面没有任何的响应,这是为什么啊? struts.xml <action name="xxDownload" class="com.xx.action.xxAction" method="download" > <result name="success" type="stream"

JavaEE中struts2实现文件上传下载功能实例解析_java

本文实例为大家分享了struts2实现文件上传下载的具体实现代码,供大家参考,具体内容如下 一.文件上传 struts提交的文件组件上传, 前台: 1).提交方式POST 2).表单类型 multipart/form-data 3).input type=file 后台: Apache提供的FileUpload组件 核心类: FileItemFactory FileItem的工厂 ServletFileUpload servlet 中的文件上传的核心类 FileItem 封装了上传的表单文件项的

JavaWeb利用struts实现文件下载时改变文件名称_java

先看看效果图: package com.fenghuo.struts.download; import java.net.URLEncoder; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.

struts 2-Struts2 文件下载如果返回一个文件夹的路径,可以实现多文件下载么?

问题描述 Struts2 文件下载如果返回一个文件夹的路径,可以实现多文件下载么? Struts2文件下载返回的是文件的输入流,可不可以返回文件的URL路径? 若要进行多文件下载,该如何实现? 解决方案 一个是服务器打包成zip 一个是客户端接收下载地址用js弹窗 解决方案二: Struts2中实现文件下载struts2实现文件下载struts2实现文件下载

Struts 2 文件下载问题

问题描述 为什么我的项目中,在下载中文文件名的文件时出现:-Cannotfindajava.io.InputStreamwiththename[inputStream]intheinvocationstack.Checkthe<paramname="inputName">tagspecifiedforthisaction.而英文文件名的文件都不会出现这种情况.无论是中文名还是英文名的文件都可以成功下载.只是出现这个提示很迷茫啊.各位大虾们帮帮忙啊. 解决方案 解决方案二:&

Struts+Spring+Hibernate实现上传下载

上传|下载 引言 文件的上传和下载在J2EE编程已经是一个非常古老的话题了,也许您马上就能掰着指头数出好几个著名的大件:如SmartUpload.Apache的FileUpload.但如果您的项目是构建在Struts+Spring+Hibernate(以下称SSH)框架上的,这些大件就显得笨重而沧桑了,SSH提供了一个简捷方便的文件上传下载的方案,我们只需要通过一些配置并辅以少量的代码就可以完好解决这个问题了. 本文将围绕SSH文件上传下载的主题,向您详细讲述如何开发基于SSH的Web程序.SS

基于Struts技术的Web层应用设计和实现

web|设计 近年来,基于MVC(Model-View-Controller)模型的Struts框架越来越受到web系统开发者的青睐.Struts是建立在当前动态网站设计领域中JSP.Servlet.XML等相关开发技术基础之上的一种主流开发架构,具有组件模块化.灵活性和重用性的优点,同时极大地简化了Web应用程序的开发.它合理地将用户表示逻辑.业务逻辑和控制逻辑分离,使得开发过程变得简洁清晰,并提高了软件的可维护性和可重用性. Struts框架 1.Struts体系结构 Struts是一种基于