(一)单个文件的上传步骤:

1.拷贝jar包:commons-fileupload.jar,  commons-io.jar

下载链接(文件上传.rar):http://www.cnblogs.com/withyou/admin/Files.aspx

2.JSP页面中增加form:(form属性是固定的)

<form action= "uploadAction"    enctype="multipart/form-data" method="post"  >
姓名:<input type="text" name="uname" /><br/>
附件:<input type="file" name="fileUpload" /><br/>
<input type="submit" value="提交" />
</form>

3.action层代码:

 public class UploadAction {
private String uname;
private File fileUpload;
private String fileUploadFileName;//名字规范 File属性的 名字+FileName,(该属性为上传过来的文件名)
public String execute() throws IOException{
String path = ServletActionContext.getServletContext().getRealPath("/fileUpload/");//该path为tomcat下的webapp/工程/下
for(int i = 0;i<fileUpload.length;i++){
String[] fielNameArray = fileUploadFileName[i].split("\\.");
//将上传的文件存到指定路径下,UUID是为了避免文件名重复
FileUtils.copyFile(fileUpload[i],new File(path+"\\"+UUID.randomUUID()+"."+fielNameArray[fielNameArray.length-1]));
}
return null;
}
public String getUname() {
return uname;
} public void setUname(String uname) {
this.uname = uname;
} public File[] getFileUpload() {
return fileUpload;
} public void setFileUpload(File[] fileUpload) {
this.fileUpload = fileUpload;
} public String[] getFileUploadFileName() {
return fileUploadFileName;
} public void setFileUploadFileName(String[] fileUploadFileName) {
this.fileUploadFileName = fileUploadFileName;
}
}

4.补充几个java获取路径的信息
  a.获取web服务器下的文件路径 (tomcat等服务器安装目录/webapp/工程/)
    request.getRealPath("/") ;application.getRealPath("")【jsp中 】 ;ServletContext().getRealPath("")

    如:request.getRealPath("web.xml") 的结果为:
    C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\strutsTest\web.xml

  b.获取本地路径

    this.getClass().getClassLoader().getResource("").getPath(); ==/D:/workspace/strutsTest/WebRoot/WEB-INF/classes/ 
    this.getClass().getResource("").getPath().toString(); ==/D:/workspace/strutsTest/WebRoot/WEB-INF/classes/bl/

  c.获取相对路径 :

    request.getContextPath();

(二)多个文件上传步骤:

 1.拷贝jar包;

 2.jsp代码如下:

  

 <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'upload.jsp' starting page</title>
<script src="js/jquery-1.4.4.js"></script>
<script type="text/javascript">
/*添加附件*/
function addFileButton(){
var fileStr = "<div>附件:<input type='file' name='fileUpload' /> <input type='button' value='删除' onclick='delFileButton(this);' /><br/></div>";
$("#div1").append(fileStr);
}
/*删除附件*/
function delFileButton(obj){
obj.parentNode.parentNode.removeChild(obj.parentNode);
}
</script>
</head>
<body>
<form action= "uploadAction" enctype="multipart/form-data" method="post" >
姓名:<input type="text" name="uname" /><br/>
<fieldset>
<legend><input type="button" value="添加附件" onclick="addFileButton();" /></legend>
<div id="div1">
<div>附件:<input type="file" name="fileUpload" /><input type="button" value="删除" onclick="delFileButton(this);" /><br/></div>
</div>
</fieldset>
<input type="submit" value="提交" />
</form>
</body>
</html>

 3.action层代码:

 package com.bjsxt.struts2.action;

 import java.io.File;
import java.io.IOException;
import java.util.UUID; import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext; public class UploadAction {
private String uname;
private File[] fileUpload;
private String[] fileUploadFileName;//名字规范 File属性的 名字+FileName;
public String execute() throws IOException{
System.out.println("--------uname-------"+uname);
String path = ServletActionContext.getServletContext().getRealPath("/fileUpload/");
System.out.println(path);
for(int i = 0;i<fileUpload.length;i++){
String[] fielNameArray = fileUploadFileName[i].split("\\.");
FileUtils.copyFile(fileUpload[i],new File(path+"\\"+UUID.randomUUID()+"."+fielNameArray[fielNameArray.length-1]));
}
return null;
}
public String getUname() {
return uname;
} public void setUname(String uname) {
this.uname = uname;
} public File[] getFileUpload() {
return fileUpload;
} public void setFileUpload(File[] fileUpload) {
this.fileUpload = fileUpload;
} public String[] getFileUploadFileName() {
return fileUploadFileName;
} public void setFileUploadFileName(String[] fileUploadFileName) {
this.fileUploadFileName = fileUploadFileName;
}
}

(三)文件下载:

1.action层代码:

 package com.bjsxt.hib.action;

 import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException; public class DownloadAction {
private InputStream inputStream;
private String fileName; public String execute(){
try {
this.inputStream = new FileInputStream("D:\\123.txt");//这里有很多处理手段满足不同需求(从数据库读取等)
this.fileName = "哈喽.txt";
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return "success";
}
public InputStream getInputStream() {
return inputStream;
}
public void setInputStream(InputStream inputStream) {
this.inputStream = inputStream;
}
/*乱码处理*/
public String getFileName() {
String temp=null;
try {
temp = new String(this.fileName.getBytes(),"ISO-8859-1");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return temp;
}
public void setFileName(String fileName) {
this.fileName = fileName;
} }

2.struts.xml配置:

  <action name="downloadAction" class="com.bjsxt.hib.action.DownloadAction">
<result name="success" type="stream">
<!--前两行是不可变的 -->
<param name="contentType">application/x-download</param>
<param name="inputName">inputStream</param>
<param name="contentDisposition">attachment;filename="${fileName}"</param>
<param name="bufferSize">4096</param>
</result>
</action>

3.浏览器直接输入:http://localhost:8080/downloadAction即可访问,下载.

使用Struts2实现文件的上传和下载的更多相关文章

  1. 基于struts2框架文件的上传与下载

    在开发一些社交网站时,需要有允许用户上传自己本地文件的功能,则需要文件的上传下载代码. 首先考虑的是文件的储存位置,这里不考虑存在数据库,因为通过数据库查询获取十分消耗资源与时间,故需将数据存储在服务 ...

  2. Struts2控制文件的上传与下载

    Struts2控制文件上传与下载的几个注意事项: (1)必须将表单的method设置为post,将enctype设置为multipart/from-data.只有这样,浏览器才会把用户选择文件的二进制 ...

  3. struts2实现文件的上传和下载实例[转]

    实现原理 Struts 2是通过Commons FileUpload文件上传. Commons FileUpload通过将HTTP的数据保存到临时文件夹,然后Struts使用fileUpload拦截器 ...

  4. Struts2中文件的上传与下载

    文件上传 1.jsp页面 <s:form action="fileAction" namespace="/file" method="POST& ...

  5. JSP文件的上传和下载

    文件上传下载,与传统的方式不同,这里能够上传和下载10G以上的文件.而且支持断点续传. 通常情况下,我们在网站上面下载的时候都是单个文件下载,但是在实际的业务场景中,我们经常会遇到客户需要批量下载的场 ...

  6. Struts2实现文件的上传与动态下载功能。

    本篇主要使用Struts2实现文件的上传与动态下载功能.出于安全考虑,所以,在硬盘上存储上传的文件的时候,统一都重新命名为随机字符串.用数据库存储真实文件名与随机文件名称之间的关联. 下面的是实体类 ...

  7. java实现文件的上传和下载

    1. servlet 如何实现文件的上传和下载? 1.1上传文件 参考自:http://blog.csdn.net/hzc543806053/article/details/7524491 通过前台选 ...

  8. java实现ftp文件的上传与下载

    最近在做ftp文件的上传与下载,基于此,整理了一下资料.本来想采用java自带的方法,可是看了一下jdk1.6与1.7的实现方法有点区别,于是采用了Apache下的框架实现的... 1.首先引用3个包 ...

  9. 在SpringMVC框架下实现文件的 上传和 下载

    在eclipse中的javaEE环境下:导入必要的架包 web.xml的配置文件: <?xml version="1.0" encoding="UTF-8" ...

随机推荐

  1. mysql5.6.16绿色版配置、运行

    原文:mysql5.6.16绿色版配置.运行 1.从该地址http://dev.mysql.com/downloads/mysql/中选择windows的版本,选择下载. 2.将下载的压缩包解压. 3 ...

  2. C语言库函数大全及应用实例七

    原文:C语言库函数大全及应用实例七 [编程资料]C语言库函数大全及应用实例七 函数名: getw 功 能: 从流中取一整数 用 法: int getw(FILE *strem); 程序例: #i nc ...

  3. JS实现全选,用于界面批量操作向后台传值时使用

    function seltAll(){ var chckBoxSign = document.getElementById("ckb"); //ckb 全选/反选的选择框id va ...

  4. IOC 在Mvc中的使用

    IOC 在Mvc中的使用 IOC,是控制反转(Inversion of Control)的英文简写, 控制反转一般分为两种类型,依赖注入(Dependency Injection)和依赖查找(Depe ...

  5. 单元测试之Qunit

    单元测试之Qunit 前言 因为公司开发了一套javascript SDK需要测试,在网上找了很久,找到了JQuery团队开发的QUnit,和基于JUnit的JsUnit,还有一些还没有看,先讲讲QU ...

  6. SQL点滴13—收集SQLServer线程等待信息

    原文:SQL点滴13-收集SQLServer线程等待信息 要知道线程等待时间是制约SQL Server效率的重要原因,这一个随笔中将学习怎样收集SQL Server中的线程等待时间,类型等信息,这些信 ...

  7. PDFBox之文档创建

    1.创建一个空的PDF 下面的小例子表示如何使用PDFBox来创建一个新的PDF文档. // 创建一个空的文档 PDDocument document = new PDDocument(); // 创 ...

  8. OpenCV2第一个马拉松8环——画一个柱状图

    在包里 灰度直方图 彩色直方图 葵花宝典 直方图的理论还是非常丰富的,应用也非常多,诸如: 直方图均衡化 直方图匹配(meanshift,camshift) 在这里,我先介绍基础.怎样绘制图像的直方图 ...

  9. 如何有效的遍历django的QuerySet

    最近做了一个小的需求,在django模型中通过前台页面的表单的提交(post),后台对post的参数进行解析,通过models模型查询MySQL,将数据结构进行加工,返回到前台页面进行展示.由于对dj ...

  10. Role Object(角色对象)

    Role Object(角色对象) 索引 意图 结构 参与者 适用性 效果 相关模式 实现 实现方式(一):Role Object 的示例实现. 意图 通过明确地附加角色对象到目标对象中,以使对象可以 ...