项目目录:

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. 使用Nmap攻击靶机和使用Wireshark进行嗅探、分析

    使用Nmap攻击靶机和使用Wireshark进行嗅探.分析 在上一次课中已经对Nmap的使用.原理已经做了很多学习,这次的课更多地针对Wireshark进行学习和使用. 使用192.168.200.1 ...

  2. Groovy 读取json文件,并用gson反序列化为List集合

    Groovy 读取json文件,并用gson反序列化 package com.bicycle.util import bicycle_grails.StationInfo import com.goo ...

  3. Python WebDriver 文件上传(一)

    昨天写了Web 文件下载的ui自动化,下载之后,今天就要写web 文件上传的功能了. 当然从折腾了俩小时才上传成功.下面写一下自己操作的步骤 首先网上说的有很多方法 如 input 标签的最好做了,直 ...

  4. Reverting back to the R12.1.1 and R12.1.3 Homepage Layout

    Reverting back to the 12.1.1 Homepage Layout Set the following profiles: FND: Applications Navigator ...

  5. iptables命令(备忘)

    语法 iptables(选项)(参数) 选项 -t<表>:指定要操纵的表: -A:向规则链中添加条目: -D:从规则链中删除条目: -i:向规则链中插入条目: -R:替换规则链中的条目: ...

  6. delphi 10.1 berlin datasnap提交clientdataset.delta报:invalid variant type conversion(类型转换错误)问题的解决

    delphi 10.1 berlin datasnap提交clientdataset.delta报:invalid variant type conversion(类型转换错误)问题的解决,需要打这个 ...

  7. vs2008快捷键极其技巧

    vs2008快捷键极其技巧 1. 工具: Microsoft Visual Studio 2008 Version 9.0.21022.8 RTM Microsoft .NET Framework V ...

  8. xaml mvvm(2)之属性绑定

    通过微软INotifyPropertyChanged接口,可以实现对UI实时更新,不管是数据源或者目标对象,可以实现相互通知. 下面我们根据INotifyPropertyChanged编写一个扩展类. ...

  9. Angularjs 实现页面遮罩层功能

    实现效果: 1.loading指令: "use strict" /** * Created by yw on 2015/9/27. * user defined loading d ...

  10. solr介绍一:Analyzer(分析器)、Tokenizer(分词器)

    首先,不知道大家在前面的例子中没有试着搜索文本串,就是在第二节,我们添加了很多文档.如果字段值是一个文本.你如果只搜索这个字段的某个单词,是不是发现搜不到? 这就是因为我们没有配置Analyzer,因 ...