Struts2中文件的上传下载,是借用commons里面的包实现文件的上传,需要导入两个jar

  commons-fileupload-1.2.2.jar

  commons-io-2.0.1.jar

实现的时候你可以使用s标签,也可以使用普通的表单标签步骤大概如下:

  使用s标签的话,先导入标签

  修改form 表单的enctype属性

  编写action(利用IO流进行上传文件)

  1.使用s标签的话,先导入标签

<%@ taglib prefix="s" uri="/struts-tags" %>

  2.修改enctype属性

  <body>
<s:form action="file2" method="post" enctype="multipart/form-data">
<s:file name="photo"></s:file></br>
<s:submit value="提交"></s:submit>
</s:form>
</body>

  3.编写action(利用IO流进行上传文件)

    属性:

private File photo;//文件位置
private String photoFileName;// 文件名
private String photoContentType;// 文件类型

    上传方法:

public String execute() throws IOException {
// 传到哪里(文件长传后的路径)
ServletContext servletContext = ServletActionContext
.getServletContext();
String path = servletContext.getRealPath("/img/" + photoFileName);
System.out.println("文件路径:" + path);
// 去读取原文件的位置
FileInputStream in = new FileInputStream(photo);
// 写入你定义的文件上传的路径
FileOutputStream out = new FileOutputStream(path);
// 写的过程
byte[] buffer = new byte[1024];
int leng = 0;
// 就是已经读取文件完成
while ((leng = in.read(buffer)) != -1) {
out.write(buffer, 0, leng);
}
in.close();
out.close();
return "success";
}

  文件下载直接贴代码:

  在配置文件中的type属性使用stream作为type的结果类型

  下载需要设置的参数:

    contentType:

    Contentlength:

    inputName:指定getter定义的那个属性的名字,默认是inputStream

    BufferSize:缓存大小

    allowCache:是否允许缓存

    contentCharSet:指定下载的字符集,在配置文件中配置一个type为stream的action

    struts2配置文件

<!--下载的配置  -->
<action name="filedownload" class="com.etc.action.FileDownLoadAction" method="filedownload">
<result type="stream">
<param name="bufferSize">2048</param>
</result>
</action>

    下载的代码(get,set方法记得生成)

private String contentType;
private String contentDisposition;
private InputStream inputStream;
private long contentLength;
public String filedownload() throws IOException{
contentType="text/html";//指定文件的类型
contentDisposition="attachment;filename=index.html";//下载的提示框
ServletContext servletContext=ServletActionContext.getServletContext();
//告诉文件在哪里
String filename=servletContext.getRealPath("/img/index.html");
//去读文件
inputStream=new FileInputStream(filename);
contentLength=inputStream.available();
return "success";
}

4.struts2中的文件上传,下载的更多相关文章

  1. java中的文件上传下载

    java中文件上传下载原理 学习内容 文件上传下载原理 底层代码实现文件上传下载 SmartUpload组件 Struts2实现文件上传下载 富文本编辑器文件上传下载 扩展及延伸 学习本门课程需要掌握 ...

  2. struts2中的文件上传,文件下载

    文件上传: Servlet中的文件上传回顾 前台页面 1.提交方式post 2.表单类型 multipart/form-data 3.input type=file 表单输入项 后台 apache提交 ...

  3. javaWeb中的文件上传下载

    在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...

  4. struts2中的文件上传和下载

    天下大事,必做于细.天下难事,必作于易. 以前见过某些人,基础的知识还不扎实就去学习更难的事,这样必定在学习新的知识会非常迷惑结果 再回来又一次学习一下没有搞懂的知识,这必定会导致学习效率的下降!我写 ...

  5. Java中实现文件上传下载的三种解决方案

    第一点:Java代码实现文件上传 FormFile file=manform.getFile(); String newfileName = null; String newpathname=null ...

  6. struts2中的文件上传和文件下载

    单文件文件上传 1.

  7. Struts2中实现文件上传的功能

    1.首先得配置一下Struts得配置文件struts-xml: <?xml version="1.0" encoding="UTF-8" ?> &l ...

  8. javaweb项目中的文件上传下载功能的实现

    框架是基于spring+myBatis的. 前台页面的部分代码: <form action="${ctx}/file/upLoadFile.do"method="p ...

  9. Linux中的文件上传下载

    1.部署ftp服务器 2.安装bypy python 客户端(还没试过,先记录一下) https://www.v2ex.com/t/124886

随机推荐

  1. struts2执行流程

    当Web容器收到 请求(HttpServletRequest) 1.它将请求传递给一个标准的的过滤链包括 (ActionContextCleanUp)过滤器 2.然后经过Other filters(S ...

  2. 作品-网站 - [二次开发] 广联达BIM

    客户地区:北京 基于帝国ECMS二次开发 网址:http://bim.glodon.com 开发性质:二次开发 网站类型:企业级

  3. HTTP返回码总结(转)

    HTTP协议状态码表示的意思主要分为五类 ,大体是 :   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~  1×× 保留   2×× 表示请求成功地接收   3×× 为完成请求客户需进一步 ...

  4. C# 进程间通信之二传递复杂数据类型(转)

    从C#下使用WM_COPYDATA传输数据说到Marshal的应用 笔者曾在一个项目的实施过程中,需要使用WM_COPYDATA在本地机器的两个进程间传输数据.在C++中实现非常简单,但在C#中实现时 ...

  5. 锋利的jQuery学习总结

    通过对<锋利的jQuery>(第二版)一书的学习,发现此书讲解通俗易懂,是学习jQuery的一本很好的指导书,特作如下总结.此书主要讲解了jQuery的常用操作,包括认识jQuery,jQ ...

  6. CentOS 7 用户怎样安装 LNMP(Nginx+PHP+MySQL)

    关于 Nginx (发音 “engine x”)这是一款免费.开源.高效的 HTTP 服务器,Nginx是以稳定著称,丰富的功能,结构简单,低资源消耗.本教程演示如何在CentOS 6.5服务器(适用 ...

  7. Thunderbird扩展

    FromToGMAP 1.4 Mail Redirect 0.7.8 MinisizeToTray revived 1.1.2 Nightly Tester Tools 3.7 Thunderbrid ...

  8. 使用Delphi收发GMail的邮件

    GMAIL的端口和连接方式比较特殊:SMTP端口为:456POP3端口为:995都采用安全连接(SSL)这些通过Indy组件就可以实现参考代码如下: object IdConnectionInterc ...

  9. [JavaScript]顺序的异步执行

    我们知道,在适用js的时候,程序是单线程执行的,而且如果遇到阻塞就会将浏览器卡死. 能否异步的执行,让程序不再卡呢? 可以,用setTimeout. 但是,问题又来了,如果我有这样的要求: 执行一个函 ...

  10. SQL Server 2008通过LinkServer连接MySQL

    链接过程就不过多描述了,搜索下都有一大堆的内容. 链接成功以后,如何调用的问题,通过“编写select脚本”的方式生成的脚本如下: [备注:asset_manager是数据库名,admin是表名] - ...