项目目录:

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. 声音处理(Cool Edit)

    平直化处理 上升半音

  2. OpenSSL命令---CRL

    用途: crl工具,用于处里PME或DER格式的CRL文件. 用法: openssl crl [-inform PEM|DER] [-outform PEM|DER] [-text] [-in fil ...

  3. Oracle E-Business Suite并发处理机制(Current Processing)

    2012年写过一篇关于Oracle E-Business Suite并发管理器的文章,回头看之前总结的内容还是比较单薄,很多点没说到,最近在看这块的内容,索性再写一篇稍微完整的文章来. Oracle ...

  4. 解决<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" 过长

    解决<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" 过长 <i ...

  5. svn自动更新服务器最新代码

    1.很简单打开dos界面 cd到svn exe目录下,运行 cd C:\Program Files\TortoiseSVN\bin    --svn安装目录(作者使用时TortoiseSVN客户端,其 ...

  6. WPF相关资料集锦

    微软官方资料 .NET Framework源代码 https://referencesource.microsoft.com/ 微软官方文档 https://docs.microsoft.com/en ...

  7. Android TextView 嵌套图片及其点击,TextView 部分文字点击,文字多颜色

    1. TextView 中嵌套图片的方法 TextView textView... textView.setText("..."); textView.append(Html.fr ...

  8. 多线程并行计算数据总和 —— 优化计算思想(多线程去计算)—— C语言demo

    多线程计算整型数组数据总和: #include <stdio.h> #include <stdlib.h> #include <Windows.h> #includ ...

  9. 【OCP认证12c题库】CUUG 071题库考试原题及答案(27)

    27.choose two The SQL statements executed in a user session are as follows: SQL> CREATE TABLE pro ...

  10. kali linux之无线渗透(续)

    Airolib 设计用于存储ESSID和密码列表,计算生成不变的PMK(计算资源消耗型) PMK在破解阶段被用于计算PTK(速度快,计算资源要求少) 通过完整性摘要值破解密码SQLite3数据库存储数 ...