文件上传
添加jar包
commons-io-1.3.2.jar
commons-fileupload-1.2.1.jar

前台页面 form表单 method值为post 添加"enctype"属性,值为"multipart/form-data"
<form action="uploadFile" enctype="multipart/form-data" method="post">
<input type="file" name="upload"/><br>
<input type="submit" value="上传文件"/>
</form>

后台action 定义四个属性 设置setter和getter方法
private File upload;//上传的文件
private String uploadContentType;//文件上传类型
private String uploadFileName;//上传文件名称
private String savePath;//保存的路径 该属性的值在struts.xml文件中配置

//savePath的getter方法需要修改下
public String getSavePath() {
//获取文件上传的时候绝对路径
return ServletActionContext.getServletContext().getRealPath(savePath);
}

上传文件方法
public String uploadFile() throws Exception{
byte[] buffer = new byte[1024];
FileInputStream fis = new FileInputStream(getUpload());
FileOutputStream fos = new FileOutputStream(getSavePath()+"\\"+this.getUploadFileName());
int length=fis.read(buffer);
while(length>0){
fos.write(buffer,0,length);
length = fis.read(buffer);
}

fis.close();
fos.flush();
fos.close();
return "success";
}

struts配置文件
<action name="uploadFile" class="com.zhh.action.UploadAction" method="uploadFile">
<!-- 设置下载的文件所在的路径 -->
<param name="savePath">/uploadfile</param>
<result name="success">upload_success.jsp</result>
</action>

文件下载
前台页面
<a href="download?fileName=${uploadFileName }">download</a>

后台action 定义四个属性 设置setter和getter方法
//读取下载文件的目录
private String inputPath;
//下载文件的文件名
private String fileName;
//读取下载文件的输入流
private InputStream inputStream;
//下载文件的类型
private String conetntType;

//创建InputStream输入流 以流的方式读取文件 inputStream属性的getter方法需要编写
public InputStream getInputStream() throws FileNotFoundException{
String path=ServletActionContext.getServletContext().
getRealPath(inputPath);
return new BufferedInputStream(new FileInputStream(path+"\\"+fileName));
}

public String download(){
return "success";
}

struts配置文件
<action name="download" class="com.zhh.action.DownloadAction" method="download">
<!-- 设置下载的文件所在的路径 -->
<param name="inputPath">/uploadfile</param>
<result name="success" type="stream">
<!-- 允许下载的文件的类型:指定为所有的二进制的文件类型,去tomcat的wen.xml里面搜索.exe -->
<param name="contentType">application/octet-stream</param>
<!-- 对应的就是Action种的属性,返回流的属性,【其实就是getInputStream()】 -->
<param name="inputName">inputStream</param>
<!-- 下载头,包括:浏览器显示的文件名 -->
<param name="contentDisposition">
attachment;filename="${fileName}"
</param>
<!-- 缓冲区大小设置 -->
<param name="bufferSize">4096</param>
</result>
</action>

struts的上传下载的更多相关文章

  1. struts 文件上传下载

    上传 1.编写上传action类 UploadAction.java package jxf.b_upload; import java.io.File; import java.io.IOExcep ...

  2. Struts文件上传下载

    Struts配置文件: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PU ...

  3. 【Struts 文件上传下载】

    RegisterAction package k.action; import k.domain.User; import k.form.UserForm; import k.service.User ...

  4. Struts的文件上传下载

    Struts的文件上传下载 1.文件上传 Struts2的文件上传也是使用fileUpload的组件,这个组默认是集合在框架里面的.且是使用拦截器:<interceptor name=" ...

  5. ssh框架文件上传下载

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. struts文件上传、文件下载

    文件上传 如果在表单中上传文件,表单的enctype属性为multipart/form-data struts默认上传文件大小为2M,如果需要修改,在配置文件中设置 <constant name ...

  7. JavaWeb实现文件上传下载功能实例解析

    转:http://www.cnblogs.com/xdp-gacl/p/4200090.html JavaWeb实现文件上传下载功能实例解析 在Web应用系统开发中,文件上传和下载功能是非常常用的功能 ...

  8. JAVA Web 之 struts2文件上传下载演示(二)(转)

    JAVA Web 之 struts2文件上传下载演示(二) 一.文件上传演示 详细查看本人的另一篇博客 http://titanseason.iteye.com/blog/1489397 二.文件下载 ...

  9. JAVA Web 之 struts2文件上传下载演示(一)(转)

    JAVA Web 之 struts2文件上传下载演示(一) 一.文件上传演示 1.需要的jar包 大多数的jar包都是struts里面的,大家把jar包直接复制到WebContent/WEB-INF/ ...

随机推荐

  1. 小代学Spring Boot之数据源

    想要获取更多文章可以访问我的博客 - 代码无止境. 经过一天对Spring Boot的研究,小代同学已经对Spring Boot框架有了一个大概的认识.并且还创建了一个简单的Spring Boot的W ...

  2. golang 单元测试&&性能测试

    一:单元测试 1.为什么要做单元测试和性能测试 减少bug 快速定位bug 减少调试时间 提高代码质量 2.golang的单元测试 单元测试代码的go文件必须以_test.go结尾 单元测试的函数名必 ...

  3. 操作xml练习

    案例1:获取指定节点的内容 public void XmlTest() { string xmlFileName=AppDomain.CurrentDomain.BaseDirectory+" ...

  4. Spring Boot + Elasticsearch实现大批量数据集下中文的精确匹配-案例剖析

    缘由 数据存储在MYSQ库中,数据基本维持不变,但数据量又较大(几千万)放在MYSQL中查询效率上较慢,寻求一种简单有效的方式提高查询效率,MYSQL并不擅长大规模数据量下的数据查询. 技术方案 考虑 ...

  5. E11000 duplicate key error index

    E11000 duplicate key error index mongodb插入报错,重复主键问题,有唯一键值重复 一般使用collection.insertOne(doc);插入一条已存在主键的 ...

  6. 推荐 2 款超牛逼、炫酷、实用的Docker管理工具!

    Docker技术的火热程度,想必每个互联网IT技术人员都能时时感受的到,的确,近些年,国内对于Docker容器技术的应用需求越来越强烈!! 人均年薪80万以上,docker到底是什么?为什么这么火? ...

  7. pycharm编辑器配置(持续更新完善)

    谨记:pycharm仅是一款编辑器,不要太依赖 pycharm的提示,不然后期换了编辑器就不行了 python解释器安装.多版本共存等 去python官网下载安装,配置环境变量.多版本共存等问题请参见 ...

  8. eclipse(javaee windows)

    百度云:链接:http://pan.baidu.com/s/1eSoO4s6   密码:54am 官方下载网址:http://www.eclipse.org/downloads/eclipse-pac ...

  9. Python小故事--------Tkinter的组件描述及解析

    概念 Tkinter: 是Tk图形用户界面工具包标准(ctl)的Python接口,作为一个轻量级的跨平台图形用户界面(GUI)开发工具 frame: 屏幕上的一块矩形区域,多是用来作为容器(conta ...

  10. Spring方法级别数据校验:@Validated + MethodValidationPostProcessor

    每篇一句 在<深度工作>中作者提出这么一个公式:高质量产出=时间*专注度.所以高质量的产出不是靠时间熬出来的,而是效率为王 相关阅读 [小家Java]深入了解数据校验:Java Bean ...