struts2上传单个文件
项目目录:

struts.xml配置:
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
<constant name="struts.devMode" value="true" /> <package name="upload" namespace="/upload" extends="struts-default"> <action name="upload" class="com.oracle.upload.UploadAction">
<result>
/uploadsucc.jsp
</result>
</action>
</package>
上传图片jsp代码:刚开始一直报错,原来没写enctype,原来是没写form的enctype属性。enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。有三个参数:
1,application/x-www-form-urlencoded。在发送前编码所有字符(默认)
2,multipart/form-data。不对字符编码。在使用包含文件上传控件的表单时,必须使用该值。
3,text/plain。空格转换为 "+" 加号,但不对特殊字符编码。
<body>
<form action="<%=basePath%>upload/upload.action" method="post" enctype="multipart/form-data">
文件::<input type="file" name="image">
<input type="submit" value="上传"/>
</form>
</body>
效果:
UploadAction代码:
package com.oracle.upload; import java.io.File;
import java.io.IOException; import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport; public class UploadAction extends ActionSupport{ private File image; //接收jsp传的参数 /**
* imageFileName是Struts2内置的属性。值是上传的文件名,如1.jpg。
* 用<s:property value=""/>标签可以显示其值。<s:debug>标签在值栈里也可以看到。
*/
private String imageFileName; public String execute() throws IOException{ /**
* Path---E:\tomcat7.0\webapps\Struts2_FileUpload2\images,
* ServletActionContext.getServletContext()得到项目的根目录。
* 再.getRealPath("/images")就是项目根目录下的images文件夹。
*/
String path = ServletActionContext.getServletContext().getRealPath("/images"); //String path = "E:/project/images";还可以自己new一个存放文件的路径。
//System.out.println("Path---"+path); if(image != null){ /**
* new一个我们存放文件的:目录+文件名
* 父路径:new File(path)就是E:\tomcat7.0\webapps\Struts2_FileUpload2\images
* 子文件:就是上传的文件名:如1.jpg
* 所以全路径为:E:\tomcat7.0\webapps\Struts2_FileUpload2\images\1.jpg
*/
File savefile = new File(new File(path),imageFileName); //System.out.println("保存图片的绝对路径+图图片名:"+savefile.getAbsolutePath()); if(! savefile.getParentFile().exists()){ //如果父路径不存在,创建他的所有路径。 savefile.getParentFile().mkdirs();
//*将image拷贝到我们的文件夹
FileUtils.copyFile(image, savefile); }else{
//如果父路径存在,直接拷贝。
FileUtils.copyFile(image, savefile); } ActionContext.getContext().getSession().put("message", "上传成功");
}else{
ActionContext.getContext().getSession().put("message", "上传失败");
} return SUCCESS;
} public File getImage() {
return image;
} public void setImage(File image) {
this.image = image;
} public String getImageFileName() {
return imageFileName;
} public void setImageFileName(String imageFileName) {
this.imageFileName = imageFileName;
}
}
上传成功uploadsucc.jsp:注意加上<%@ taglib uri="/struts-tags" prefix="s" %>标签。
<body>
${message}<br>
<img src="<%=basePath%>images/${imageFileName}" style="width: 300px;height: 200px">
<br/>
<s:property value="getImageFileName()"/>
<s:debug></s:debug>
<hr/>
<form action="upload/upload.action" method="post" enctype="multipart/form-data">
选择文件<input type="file" name="image">
<input type="submit" value="上传"/>
</form>
</body>
上传成功效果:

struts2上传单个文件的更多相关文章
- js实现上传单个文件
js上传文件:js 上传单个文件(任意大小) 疯狂代码 http://www.CrazyCoder.cn/ :http:/www.CrazyCoder.cn/Javascript/Article832 ...
- input文件上传(上传单个文件/多选文件/文件夹、拖拽上传、分片上传)
//上传单个/多个文件 <input title="点击选择文件" id="h5Input1" multiple="" accept= ...
- struts2 上传下载文件,异常处理,数据类型转换
一,web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version=" ...
- 〖Linux〗上传单个文件到FTP的Shell命令行(函数)
#!/bin/bash - #=============================================================================== # # F ...
- resteasy上传单个文件/多个文件到阿里云服务器
代码如下: ExcelServerController.java package com.xgt.controller; import com.xgt.bean.bs.ExcelBean; impor ...
- plupload如何限制上传文件数量,限制只能上传单个文件
1 完整代码 $(function() { $("#uploader").pluploadQueue({ runtimes : 'html5,gears,flash,silverl ...
- ajax上传单个文件
jsp页面 <%@ page language="java" pageEncoding="UTF-8"%> <!DOCTYPE HTML> ...
- YII2表单中上传单个文件
有些时候我们提交的表单中含有文件.怎么样让表单里的数据和文件一起提交. 我的数据表tb_user内容如下: CREATE TABLE `tb_user` ( `id` int(11) unsigned ...
- Spring Mvc:用MultiPartFile上传单个文件,多个文件
1.单个文件上传步骤: 添加Apache文件上传jar包 首先需要下载两个apache上传文件的jar包,commons-fileupload-1.3.1jar,commons-io-2.4.jar ...
随机推荐
- iOS9 视频播放
self.videoFileURL = [NSURL URLWithString:[NSString stringWithFormat:@"file:///%@", self ...
- 在spark中启动standalone集群模式cluster问题
spark-submit --master spark://master:7077 --deploy-mode cluster --driver-cores 2 --driver-memory 100 ...
- [label][JavaScript][The Defined Guide of JavaScript] 变量的作用域
变量的作用域 一个变量的作用域(scope)是程序中定义这个变量的区域. 全局(global)变量的作用域(scope)是全局性的,即在JavaScript代码中,它处处都有定义. 而在函数之内 ...
- task4: 结对编程-词频统计[修改版]
问题描述: 读取一个文件,统计其中单词出现次数,并按从高到低的顺序显示,相同顺序的字典序排列. 思路: 基于上次的程序用正则提取出文本里的单词,然后利用字典计数(先get,为null则置1,不为nul ...
- Nutch 问题杂记
1. 如何绕过目标站点的robots.txt限制 多数站点都是只允许百度.google等搜索引擎抓取的,所以会在robots.txt里限制其他爬虫. nutch自然是会遵循robots协议的,但是我们 ...
- js如何给当前日期+1?
一天=24小时=1440分钟=86400秒 所以给当前日期加一天的步骤为: 1.获取当前日期: 2.利用86400秒给其进行加一天操作: 3.类似加一天,两天,一月,一年等,过程如此. 代码如下(以j ...
- [Oracle]Oracle数据库数据被修改或者删除恢复数据
1.SELECT * FROM CT_FIN_RiskItem--先查询表,确定数据的确不对(cfstatus第一行缺少)2.select * from CT_FIN_RiskItem as of t ...
- Thread类
Thread类相对于线程池中的线程,使用者有更多的控制权.该类允许创建前台线程,设置线程优先级等.Thread类的构造函数重载为接受ThreadStart和ParameterizedThreadSta ...
- winform app.cpnfig 文件的引用
1.app.config配置文件修改 <?xml version="1.0" encoding="utf-8"?> <configuratio ...
- c语言------第一次作业,分支,顺序结构
1.1思维导图 1.2本章学习体会及代码量学习体 1.2.1学习体会 初次接触C语言,由于比较懒惰,感觉学习脚步跟不上身边的同学,也比较困扰.但伴随着pta上多次显示的##编译错误##,坚持不懈地问舍 ...