页面:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="${pageContext.request.contextPath}/jslib/core/jquery-1.4.2.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/jslib/upLoadUpLoadify/swfobject.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/jslib/upLoadUpLoadify/jquery.uploadify.v2.1.4.js"></script>
<link rel="stylesheet" href="${pageContext.request.contextPath}/jslib/upLoadUpLoadify/uploadify.css" type="text/css" />
<script type="text/javascript">
$(document).ready(function() {
$("#fileupload").uploadify({
/*注意前面需要书写path的代码*/
'uploader' : '${pageContext.request.contextPath}/jslib/upLoadUpLoadify/uploadify.swf', //上传所用的flash 必须
'script' : '${pageContext.request.contextPath}/oneboxtest/uploadtest.do', //请求到
'cancelImg' : '${pageContext.request.contextPath}/jslib/upLoadUpLoadify/cancel.png', //删除的图片
'queueID' : 'fileQueue', //和存放队列的DIV的id一致
'fileDataName' : 'fileupload', //和以下input的name属性一致
'auto' : false, //是否自动开始
'multi' : true, //是否支持多文件上传
'buttonText' : 'Browse', //按钮上的文字
'simUploadLimit' : 20, //一次同步上传的文件数目
'sizeLimit' : 19871202, //设置单个文件大小限制
'queueSizeLimit' : 20, //队列中同时存在的文件个数限制
'fileDesc' : '支持格式:jpg/gif/jpeg/png/bmp/txt/rar/zip.', //如果配置了以下的'fileExt'属性,那么这个属性是必须的
'fileExt' : '*.jpg;*.gif;*.jpeg;*.png;*.bmp;*.txt;*.rar;*.zip',//允许的格式
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 test.cn.easier.rcs.onebox;
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 cn.easier.rcs.core.action.BaseAction;
public class UpLoadUpLoadifyAction extends BaseAction {
/**
* 唯一序列化
*/
private static final long serialVersionUID = 1L;
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 uploadtest() throws Exception {
System.out.println("进入了页面");
String extName = ""; // 保存文件拓展名
String newFileName = ""; // 保存新的文件名
String nowTimeStr = ""; // 保存当前时间
SimpleDateFormat sDateFormat;
Random r = new Random();
String savePath = ServletActionContext.getServletContext().getRealPath(""); // 获取项目根路径
/*
* 拼串组成要上传保存文件的路径,即:D:\Program
* Files
* \apache-tomcat-6.0.20\webapps
* \(项目名)\pic\secondhand 这样的路径
*/
System.out.println("*********************"+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; // 这里不需要页面转向,所以返回空就可以了
}
}