直接上代码:
action类:
package action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
public class FileUploadAction extends ActionSupport {
private File img_file;
private String img_fileContentType;// 格式同上"fileName"+ContentType
private String img_fileFileName;// 格式同上"fileName"+FileName
private String savePath;// 文件上传后保存的路径
private Map<String, Object> dataMap = new HashMap<String, Object>();
@Override
/***
* 上传文件
*/
public String execute() throws Exception {
File dir = new File(getSavePath());
System.out.println("真正的路径:" + dir.getAbsolutePath());
// 判断是否存在路径
if (!dir.exists()) {
dir.mkdirs();
}
// 当前上传的文件
File file = getImg_file();
System.out.println("文件:" + file);
// 获得后缀
String ext = getImg_fileFileName().substring(
getImg_fileFileName().lastIndexOf("."));
System.out.println("后缀名:" + ext);
String newFileName = UUID.randomUUID() + ext;
System.out.println("新的文件名:" + newFileName);
FileOutputStream fos = new FileOutputStream(getSavePath() + "//"
+ newFileName);
FileInputStream fis = new FileInputStream(getImg_file());
byte[] buffers = new byte[1024];
int len = 0;
while ((len = fis.read(buffers)) != -1) {
fos.write(buffers, 0, len);
}
fos.close();
fis.close();
// String uploadFileName = getImg_fileFileName();
dataMap.put("filename", newFileName);
return SUCCESS;
}
public File getImg_file() {
return img_file;
}
public void setImg_file(File img_file) {
this.img_file = img_file;
}
public String getImg_fileContentType() {
return img_fileContentType;
}
public void setImg_fileContentType(String img_fileContentType) {
this.img_fileContentType = img_fileContentType;
}
public String getImg_fileFileName() {
return img_fileFileName;
}
public void setImg_fileFileName(String img_fileFileName) {
this.img_fileFileName = img_fileFileName;
}
public String getSavePath() {
return savePath;
}
public void setSavePath(String savePath) {
this.savePath = savePath;
}
public Map<String, Object> getDataMap() {
return dataMap;
}
public void setDataMap(Map<String, Object> dataMap) {
this.dataMap = dataMap;
}
}
struts.xml配置:
<constant name="struts.multipart.maxSize" value="10240000000" />
<package name="default" namespace="" extends="json-default">
<action name="uploadAction" class="action.FileUploadAction">
<param name="savePath">C:\devtools\server\apache-tomcat-7.0.57\webapps\upload\weiuserfile</param>
<result type="json">
<param name="root">dataMap</param>
</result>
</action>
</package>
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">
<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">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<link rel="stylesheet" type="text/css" href="js/uploadify.css">
<script type="text/javascript" src="js/jquery-1.10.2.min.js"></script>
<script type="text/javascript" src="js/jquery.uploadify.min.js"></script>
<script type="text/javascript">
$(function(){
$("#img_file").uploadify({
auto:false,//是否自动上传
height: 30,
buttonText:'选择图片',
cancelImage:'<%=basePath%>js/uploadify-cancel.png',
swf : '<%=basePath%>js/uploadify.swf',
// expressInstall:'js/uploadify/expressInstall.swf',
uploader : '<%=basePath%>uploadAction.action', //后台处理上传文件的action
width : 120,
'multi' : true, //设置为true将允许多文件上传
'filesSelected' : '4',
queueID : 'uploadfileQueue',
fileObjName : 'img_file', //与后台Action中file属性一样
/*
formData:{ //附带值
'userid':'111',
'username':'tom',
'rnd':'111'
},
*/
fileTypeDesc : '上传文件支持的文件格式:jpg,jpge,gif,png',
fileTypeExts : '*.jpg;*.jpge;*.gif;*.png',//*.jpg;*.jpge;*.gif;*.png
queueSizeLimit : 4,//只能一次上传4张图片
// simUploadLimit:1,//一次可以上传1个文件
fileSizeLimit : '20971520',//上传文件最大值 单位为字节 2M
//返回一个错误,选择文件的时候触发
onSelectError : function(file, errorCode, errorMsg) {
switch (errorCode) {
case -100:
alert("上传的文件数量已经超出系统限制的4个文件!");
break;
case -110:
alert("文件 [" + file.name
+ "] 大小超出系统限制的2M大小!");
break;
case -120:
alert("文件 [" + file.name + "] 大小异常!");
break;
case -130:
alert("文件 [" + file.name + "] 类型不正确!");
break;
}
}, //
//上传到服务器,服务器返回相应信息到data里
onUploadSuccess : function(file, data, response) {
var objs = eval('(' + data + ')');
alert(objs);
alert(objs.filename);
var phtml = "<span><img style='width:150;height:150' src='<%=basePath%>weiuserfile/"+objs.filename+"'></span>";
alert(phtml);
if ($("#imgs span").length == 0) {
$("#imgs").html(phtml);
} else {
$("#imgs span:last").after(phtml);
}
},
onSelect : function(file) {
//alert(file.name);
},
//removeCompleted:true,//上传的文件进度条是否消失
requeueErrors : false,
// removeTimeout:2,//进度条消失的时间,默认为3
progressData : "percentage",//显示上传的百分比
onUploadError : function(file, errorCode, errorMsg,
errorString, swfuploadifyQueue) { //这里是取消的时候发生
// $("#dialog-message").html(errorString);
}
});
});
//上传文件
function myUpload() {
$("#img_file").uploadify('upload', '*');
}
</script>
</head>
<body>
<form action="" method="post">
<input type="file" name="img_file" id="img_file">
<div id="uploadfileQueue"></div>
<div id="imgs"></div>
<div id="dialog-message"></div>
</form>
<p>
<a href="javascript:void(0);" onclick="myUpload()">上传</a> <a
href="javascript:$('#img_file').uploadify('cancel')">取消上传</a>
</p>
</body>
</html>
需要的jar包:
需要的js:
下载连接:http://pan.baidu.com/s/1mgkOHN6