Action类代码:
package com.struts2_upload.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class UploadAction extends ActionSupport {
private File myFile;//上传的文件
private String myFileContentType;//上传文件的类型(变量取名必须myFile+ContentType格式)
private String myFileFileName;//上传文件的名(变量取名必须myFile+FileName格式)
public String execute(){
try {
//基于image创建一个文件输入流
InputStream inp=new FileInputStream(myFile);
//设置上传文件目录
String path=ServletActionContext.getServletContext().getRealPath("/upload");
//设置目标文件
File toFile=new File(path,this.getMyFileFileName());
//创建一个输出流
OutputStream out=new FileOutputStream(toFile);
//设置缓存
byte [] buffer=new byte[1024];
int length=0;
//读取image文件输出到toFile文件中
while ((length=inp.read(buffer))>0) {
out.write(buffer,0,length);
}
System.out.println(this.getMyFileFileName());
System.out.println(this.getMyFileContentType());
inp.close(); out.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return SUCCESS;
}
public File getMyFile() {
return myFile;
}
public void setMyFile(File myFile) {
this.myFile = myFile;
}
public String getMyFileContentType() {
return myFileContentType;
}
public void setMyFileContentType(String myFileContentType) {
this.myFileContentType = myFileContentType;
}
public String getMyFileFileName() {
return myFileFileName;
}
public void setMyFileFileName(String myFileFileName) {
this.myFileFileName = myFileFileName;
}
}
struts.xml 配置
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="default" namespace="/" extends="struts-default">
<action name="uploadAction" class="com.struts2_upload.action.UploadAction">
<result name="success">index.jsp</result>
</action>
</package>
</struts>
index.jsp 页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<script type="text/javascript" src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.js"></script>
<script type="text/javascript" src="js/jQuery.autoIMG.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript">
$(function(){
$("#imgShow").autoIMG();//设置ID为imgShow的DIV中的图片等比例自动缩放
});
</script>
</head>
<body>
<form action="uploadAction" method="post" enctype="multipart/form-data">
上传图片: <input type="file" name="myFile" />
<input type="submit" value="上传" />
</form>
<div id="imgShow" style="width:300px; height:200px; border:1px solid #FF0000;">
<img alt="上传文件" src="${pageContext.request.contextPath}/<s:property value="'upload/'+myFileFileName"/>">
<!-- ${pageContext.request.contextPath}获取当前项目的路径 -->
</div>
</body>
</html>
------------------------------------------------------------------------------------------------------------------------------------
详情见附件