jsp页面
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="js/swfobject.js"></script>
<script type="text/javascript" src="js/jquery.uploadify.v2.1.0.js"></script>
<link rel="stylesheet" type="text/css" href="Css/uploadify.css" />
<script type="text/javascript">
$(document).ready(function() {
$("#fileupload").uploadify({
/*注意前面需要书写path的代码*/
'uploader' : '<%=path%>/Images/uploadify.swf',
'script' : '<%=path%>/fileupload.action',
'cancelImg' : '<%=path%>/Images/cancel.png',
'queueID' : 'fileQueue', //和存放队列的DIV的id一致
'fileDataName' : 'fileupload', //和以下input的name属性一致
'auto' : false, //是否自动开始
'multi' : true, //是否支持多文件上传
'buttonText' : 'Browse', //按钮上的文字
'simUploadLimit' : 3, //一次同步上传的文件数目
'sizeLimit' : 19871202, //设置单个文件大小限制
'queueSizeLimit' : 2, //队列中同时存在的文件个数限制
'fileDesc' : '支持格式:jpg/gif/jpeg/png/bmp.', //如果配置了以下的'fileExt'属性,那么这个属性是必须的
'fileExt' : '*.jpg;*.gif;*.jpeg;*.png;*.bmp',//允许的格式
onComplete : function (event, queueID, fileObj, response, data) {
$('<li></li>').appendTo('.files').text(response);
},
onError: function(event, queueID, fileObj) {
alert("文件:" + fileObj.name + "上传失败");
},
onCancel: function(event, queueID, fileObj){
alert("取消了" + fileObj.name);
}
});
});
</script>
<script type="text/javascript">
//必须的
function uploadifyUpload(){
$('#fileupload').uploadifyUpload();
}
</script>
</head>
<body>
<table>
<tr>
<td>
上传图片:
</td>
<td>
<input type="file" name="fileupload" id="fileupload" />
<div id="fileQueue"></div>
<p>
<a href="javascript:;" onClick="javascript:uploadifyUpload()">开始上传</a>
<a href="javascript:jQuery('#fileupload').uploadifyClearQueue()">取消所有上传</a>
</p>
<ol class=files></ol>
</td>
</tr>
</table>
</body>
</html>
————————————————————————————————————————————————————————
action
package com.test.action;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class FileUploadAction extends ActionSupport {
private File fileupload; // 和JSP中input标记name同名
// Struts2拦截器获得的文件名,命名规则,File的名字+FileName
// 如此处为 'fileupload' + 'FileName' = 'fileuploadFileName'
private String fileuploadFileName; // 上传来的文件的名字
public File getFileupload() {
return fileupload;
}
public void setFileupload(File fileupload) {
this.fileupload = fileupload;
}
public String getFileuploadFileName() {
return fileuploadFileName;
}
public void setFileuploadFileName(String fileuploadFileName) {
this.fileuploadFileName = fileuploadFileName;
}
public String execute() throws Exception {
String extName = ""; // 保存文件拓展名
String newFileName = ""; // 保存新的文件名
String nowTimeStr = ""; // 保存当前时间
SimpleDateFormat sDateFormat;
Random r = new Random();
String savePath = ServletActionContext.getServletContext().getRealPath(
""); // 获取项目根路径
savePath = savePath + "\\uploads\\"; /*
* 拼串组成要上传保存文件的路径,即:D:\Program
* Files\apache-tomcat-6.0.20\webapps\(项目名)\
* 这样的路径
*/
System.out.println("path:"+savePath);
HttpServletResponse response = ServletActionContext.getResponse();
response.setCharacterEncoding("utf-8"); // 务必,防止返回文件名是乱码
// 生成随机文件名:当前年月日时分秒+五位随机数(为了在实际项目中防止文件同名而进行的处理)
int rannum = (int) (r.nextDouble() * (99999 - 10000 + 1)) + 10000; // 获取随机数
sDateFormat = new SimpleDateFormat("yyyyMMddHHmmss"); // 时间格式化的格式
nowTimeStr = sDateFormat.format(new Date()); // 当前时间
// 获取拓展名
if (fileuploadFileName.lastIndexOf(".") >= 0) {
extName = fileuploadFileName.substring(fileuploadFileName
.lastIndexOf("."));
}
newFileName = nowTimeStr + rannum + extName; // 文件重命名后的名字
fileupload.renameTo(new File(savePath + newFileName)); // 保存文件
response.getWriter().print(fileuploadFileName + " 上传成功");// 向页面端返回结果信息
return null; // 这里不需要页面转向,所以返回空就可以了
}
}
————————————————————————————————————————————————————
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>
<constant name= "struts.multipart.maxSize" value="5242880" />
<package name="test" extends="struts-default">
<action name="fileupload" class="com.test.action.FileUploadAction">
<result name="success">/upload.jsp</result>
</action>
</package>
</struts>