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

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. WPF中嵌入WinForm中的webbrowser控件

    原文:WPF中嵌入WinForm中的webbrowser控件 使用VS2008创建WPF应用程序,需使用webbrowser.从工具箱中添加WPF组件中的webbrowser发现其中有很多属性事件不能 ...

  2. js对象字面量

    在编程语言中,字面量是一种表示值的记法.例如,"Hello, World!" 在许多语言中都表示一个字符串字面量(string literal ),JavaScript也不例外.以 ...

  3. HTML5它contenteditable属性

    HTML5它contenteditable属性 1.功能说明 (1)功能:同意用户编辑元素中的内容 (2)说明:是一个布尔值.false是不能编辑,true为可编辑 2.分析实例 (1)content ...

  4. 使用Scala操作Mongodb

    介绍 Scala是一种功能性面向对象语言.它融汇了很多前所未有的特性.而同一时候又执行于JVM之上.随着开发人员对Scala的兴趣日增,以及越来越多的工具支持,无疑Scala语言将成为你手上一件不可缺 ...

  5. Linux Kernel的Makefile与Kconfig文件的语法

    https://www.kernel.org/doc/Documentation/kbuild/kconfig-language.txt Introduction ------------ The c ...

  6. VS2015安装

    VS2015安装 Secondary Installer Setup Failed求解决方案 看到微软最近的一系列变化,着实让我等兴奋不已.VS2015下载地址就不说了.先来记录一下微软的几个变化吧. ...

  7. 实例学习SSIS(五)--理论介绍SSIS

    原文:实例学习SSIS(五)--理论介绍SSIS 导读: 实例学习SSIS(一)--制作一个简单的ETL包 实例学习SSIS(二)--使用迭代 实例学习SSIS(三)--使用包配置 实例学习SSIS( ...

  8. 大约ActionContext.getContext()使用体验

    这是我在另一个人的博客看了,原来博客的时间长一点.我把它简化了一下,运营商,以方便它看起来. 为了避免与Servlet API耦合在一起,方便Action类做单元測试,Struts 2对HttpSer ...

  9. SignalR 2.0 入门与提高

    SignalR 2.0 入门与提高 SignalR 2.0 最近整理了SignalR2.0 部分知识点,原文翻译,由于自己是土鳖,翻译得不好的地方,欢迎指正!仅供各位初学者学习! 第一节. 入门ASP ...

  10. 一个ASP.NET Web API 2.0应用

    在一个空ASP.NET Web项目上创建一个ASP.NET Web API 2.0应用 由于ASP.NET Web API具有与ASP.NET MVC类似的编程方式,再加上目前市面上专门介绍ASP.N ...