Struts2单文件上传
第一步:首先写个上传文件的页面(简单的一个form表单)
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>文件上传</title>
</head>
<body>
<h1>文件上传</h1>
<br><br>
<form action="/Struts2-day02pm/upload/one_upload.action" method="post" enctype="multipart/form-data">
文件上传1:<br><br>
<input type="file" name="oneFile"><br><br>
<input type="submit" value="开始上传">
</form> </body>
第二步:创建一个基类BaseAction.java,继承ActionSupport,并实现ServletRequestAware,ServletResponseAware,ServletContextAware三个接口,重写三个接口的set方法
public class BaseAction extends ActionSupport implements ServletRequestAware,ServletResponseAware,ServletContextAware{
/**
* 编写一个基类,继承ActionSupport并实现相应的接口
* 以后的Action直接继承该类,就可以简单获取到Servlet API
* 这是一个典型的适配设计模式
* @author Owen
*/
private static final long serialVersionUID = 7267018575222346353L;
@Override
public void setServletContext(ServletContext servletContext) {
}
@Override
public void setServletResponse(HttpServletResponse response) {
}
@Override
public void setServletRequest(HttpServletRequest request) {
}
}
第三步:创建OneUploadAction请求处理类,继承BaseAction
public class OneUploadAction extends BaseAction {
private static final long serialVersionUID = -4445894434193884175L;
// 该属性名必须和<input type="file" name="oneFile">中name值一致
private File oneFile;
// 真实名称
private String oneFileFileName;
// 文件类型
private String oneFileContentType;
private HttpServletRequest request;
@Override
public void setServletRequest(HttpServletRequest request) {
this.request = request;
}
@Override
public String execute() throws Exception {
// 获取保存上传文件在服务器的真是路径
String uploadPath = request.getServletContext().getRealPath("upload");
System.out.println(uploadPath);//目录真是路径
System.out.println("oneFile--"+oneFile.getName());//文件临时名称
System.out.println("oneFileFileName--"+oneFileFileName);//文件原始名称
System.out.println("oneFileContentType--"+oneFileContentType);//文件类型
// 第一种:该步骤适合上传小文件
// 将临时文件复制到硬盘上的真是路径
/*
File file = new File(uploadPath, oneFileFileName);//拼接文件的存放路径和存放文件的真实名称
FileUtils.copyFile(oneFile, file);//将临时文件复制到上面这个路径
*/
// 第二种:适合大文件上传操作
/*InputStream is = null;
OutputStream os = null;
is = new FileInputStream(oneFile);
os = new FileOutputStream(new File(uploadPath,oneFileFileName));
byte[] buffer = new byte[500];
int length = 0;
while((length=is.read(buffer,0,buffer.length)) != -1){
os.write(buffer, 0,length);
}
os.close();
is.close();*/
copyFile(uploadPath);
return SUCCESS;
}
public void copyFile(String uploadPath){
InputStream is = null;
OutputStream os = null;
try {
is = new FileInputStream(oneFile);
os = new FileOutputStream(new File(uploadPath,oneFileFileName));
byte[] buffer = new byte[500];
int len = 0;
while((len=is.read(buffer,0,buffer.length)) != -1){
os.write(buffer, 0,len);
}
os.close();
is.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public File getOneFile() {
return oneFile;
}
public void setOneFile(File oneFile) {
this.oneFile = oneFile;
}
public String getOneFileFileName() {
return oneFileFileName;
}
public void setOneFileFileName(String oneFileFileName) {
this.oneFileFileName = oneFileFileName;
}
public String getOneFileContentType() {
return oneFileContentType;
}
public void setOneFileContentType(String oneFileContentType) {
this.oneFileContentType = oneFileContentType;
}
}
第三步:配置struts.xml文件
<struts>
<package name="upload-default" namespace="/upload" extends="struts-default">
<action name="one_upload" class="com.struts2.day02pm.action.OneUploadAction">
<result>/WEB-INF/jsp/one_upload_ok.jsp</result>
</action>
</package>
</struts>
第四步:浏览器测试
Struts2单文件上传的更多相关文章
- Struts2单文件上传原理及示例
一.文件上传的原理 表单元素的enctype属性指定的是表单数据的编码方式,该属性有3个值: 1.application/x-www-form-urlencoded:这是默认编码方式,它只处理表单域里 ...
- Struts2 单文件上传
Struts2 提供了更为简便的文件上传机制,将文件上传的复杂操作都封装到commons-fileupload.jar .commons-io.jar两个jar包中,然后再程序中使用简单的几句代码就能 ...
- struts2的文件上传
在做B/S系统时,通常会涉及到上传文件和下载文件,在没接struts2框架之前,我们都是使用apache下面的commons子项目的FileUpload组件来进行文件的上传,但是那样做的话,代码看起来 ...
- struts2实现文件上传和下载
在做B/S系统时,通常会涉及到上传文件和下载文件,在没接struts2框架之前,我们都是使用apache下面的commons子项目的FileUpload组件来进行文件的上传,但是那样做的话,代码看起来 ...
- Struts2实现单文件上传
首先配置一下web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi ...
- 【Struts2学习笔记(9)】单文件上传和多文件上传
(1)单文件上传 第一步:在WEB-INF/lib下增加commons-fileupload-1.2.1.jar.commons-io-1.3.2.jar. 这两个文件能够从http://common ...
- Struts2之文件上传(单文件/多文件)
<一>简述: Struts2的文件上传其实也是通过拦截器来实现的,只是该拦截器定义为默认拦截器了,所以不用自己去手工配置,<interceptor name="fileUp ...
- struts2之单文件上传(7)
前台页面jsp <!-- 拦截的时候用这个 <s:form action="uploadAction" enctype="multipart/form-dat ...
- struts2实现文件上传(多文件上传)及下载
一.要实现文件上传,需在项目中添加两个jar文件 二.上传准备的页面 注:必须植入enctype="multipart/form-data"属性,以及提交方式要设置成post &l ...
随机推荐
- 排序算法_MergeSort
算法思想: 分治自顶而下实现归并排序: 分治法的三个步骤 设归并排序的当前区间是R[low..high],分治法的三个步骤是:①分解:将当前区间一分为二,即求分裂点 ...
- 特性扩展:WebActivatorEx
WebActivator: PreApplicationStartMethod 属性,用于标记作为东西您获取 Web 应用程序启动时调用的方法,在Application_Start前. PostApp ...
- gcc “-I”(大写i),“-L”(大写l),“-l”(小写l)的区别
我们用gcc编译程序时,可能会用到“-I”(大写i),“-L”(大写l),“-l”(小写l)等参数,下面做个记录: 例: gcc -o hello hello.c -I /home/hello/inc ...
- PHP检查表单提交是否来自于本站(验证HTTP_REFERER等)
方法一: 你可以把处理提交数据的代码写到一个单独的文件里,比如form.php. <?php if (defined(’INSIDE’)) {//判断是否有定义INS ...
- nyoj 1036 非洲小孩【贪心区间选点】
非洲小孩 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 家住非洲的小孩,都很黑.为什么呢?第一,他们地处热带,太阳辐射严重.第二,他们不经常洗澡.(常年缺水,怎么洗 ...
- IT工作中工资最高和增长最快的是什么
Staff在博客IT Jobs with the Highest Pay and Fastest Growth中画了个图说明IT工作中工资最高和增长最快的是什么.
- Unity3D延迟回调的封装
最近,整理项目框架逻辑时,无意中翻到n年前封装的延迟回调管理器,就拎出来说道说道: 先说一下系统提供的几种常用的延迟回调方式: 1)Invoke(Invoke.CancelInvoke):首先需要继承 ...
- HDU 2196 树形DP Computer
题目链接: HDU 2196 Computer 分析: 先从任意一点开始, 求出它到其它点的最大距离, 然后以该点为中心更新它的邻点, 再用被更新的点去更新邻点......依此递推 ! 代码: ...
- [Java 8] (5) 使用Lambda表达式进行设计
使用Lambda表达式进行设计 在前面的几篇文章中,我们已经见识到了Lambda表达式是怎样让代码变的更加紧凑和简洁的. 这一篇文章主要会介绍Lambda表达式怎样改变程序的设计.怎样让程序变的更加轻 ...
- Java大数类介绍
java能处理大数的类有两个高精度大整数BigInteger 和高精度浮点数BigDecimal,这两个类位于java.math包内,要使用它们必须在类前面引用该包:import java.math. ...