项目目录:

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上传单个文件的更多相关文章

  1. js实现上传单个文件

    js上传文件:js 上传单个文件(任意大小) 疯狂代码 http://www.CrazyCoder.cn/ :http:/www.CrazyCoder.cn/Javascript/Article832 ...

  2. input文件上传(上传单个文件/多选文件/文件夹、拖拽上传、分片上传)

    //上传单个/多个文件 <input title="点击选择文件" id="h5Input1" multiple="" accept= ...

  3. struts2 上传下载文件,异常处理,数据类型转换

    一,web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version=" ...

  4. 〖Linux〗上传单个文件到FTP的Shell命令行(函数)

    #!/bin/bash - #=============================================================================== # # F ...

  5. resteasy上传单个文件/多个文件到阿里云服务器

    代码如下: ExcelServerController.java package com.xgt.controller; import com.xgt.bean.bs.ExcelBean; impor ...

  6. plupload如何限制上传文件数量,限制只能上传单个文件

    1 完整代码 $(function() { $("#uploader").pluploadQueue({ runtimes : 'html5,gears,flash,silverl ...

  7. ajax上传单个文件

    jsp页面 <%@ page language="java" pageEncoding="UTF-8"%> <!DOCTYPE HTML> ...

  8. YII2表单中上传单个文件

    有些时候我们提交的表单中含有文件.怎么样让表单里的数据和文件一起提交. 我的数据表tb_user内容如下: CREATE TABLE `tb_user` ( `id` int(11) unsigned ...

  9. Spring Mvc:用MultiPartFile上传单个文件,多个文件

    1.单个文件上传步骤: 添加Apache文件上传jar包 首先需要下载两个apache上传文件的jar包,commons-fileupload-1.3.1jar,commons-io-2.4.jar ...

随机推荐

  1. openGL中的原理理解1---一个视图需要支持OGL需要配置,GLenbalView的理解

    OpenGL的绘图机制是 OpenGL的绘图方式与Windows一般的绘图方式是不同的,主要区别如下: (1)Windows采用的是GDI(Graphy Device Interface 图形设备接口 ...

  2. [记]Centos下流量统计使用记录

    因为最近要进行centos流量统计,需求是想针对tomcat进行针对性的上下行流量时段统计及汇总,找了很多资料及命令,要么是可以针对进程的但是没有汇总,要么是有汇总但是不针对进程. 所以只能混合几个命 ...

  3. 国际时区 TimeZone ID列表

    public static void main(String[] args) { Calendar c = new GregorianCalendar(); c.setTime(new Date()) ...

  4. Vue基本使用---对象提供的属性功能

    一 过滤器 过滤器就是vue允许开发者自定义的文本格式化函数, 可以使用在两个地方:输出内容和操作数据中. 1.1 定义过滤器的两种方式 1.1.1 使用Vue.filter()进行全局定义 Vue. ...

  5. Android源码设计模式分析开源项目

    简述 该项目通过分析Android系统中的设计模式来提升大家对设计模式的理解,从源码的角度来剖析既增加了对Android系统本身的了解,也从优秀 的设计中领悟模式的实际运用以及它适用的场景,避免在实际 ...

  6. cron和crontab

    crontab -l 列出目前的计划任务(时程表) crontab -e 编辑计划任务   计划任务的格式如下: f1 f2 f3 f4 f5 program 其中 f1 是表示分钟,f2 表示小时, ...

  7. C# 调用Delphi dll

    delphi dll 源码: library dllres; type char10 = ..] of char; TMydata = packed record id: Integer; name: ...

  8. 初学Ionic

    官网 https://ionicframework.com/ 如连接所示,可跳转到该前端框架的官网,在这里提供了两种方式可供大家学习: Code with the CLI Design with lo ...

  9. .Net Core 2.0 的 ConsoleApp 搭建 Quartz(xml配置)windows服务

    零.创建一个.Net Core 2.0 的ConsoleApp 应用,建完就是这个样子了. 添加Log4Net 的引用,(不想看可以不看,个人习惯)Install-Package log4net添加C ...

  10. JVM垃圾收集器(2)

    此文已由作者赵计刚薪授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 1.G1 说明: 从上图来看,G1与CMS相比,仅在最后的"筛选回收"部分不同(CMS ...