前台代码
<html>
<head>
<base href="<%=basePath%>">
<title>文件上传</title>
<link rel="stylesheet" type="text/css" href="uploadfy/uploadify.css" />
<script type="text/javascript" src="uploadfy/jquery-1.9.1.js"></script>
<script type="text/javascript" src="uploadfy/jquery.uploadify.js"></script>
<script type="text/javascript" src="uploadfy/jquery.uploadify.min.js"></script>
<script type="text/javascript">
$(function() {
$("#files").uploadify({
'multi': false,
'auto':false,
'fileObjName' : 'files',
'swf': 'uploadfy/uploadify.swf',
'uploader': 'upload.action',
'multi': false,
'overrideEvents' : ['onUploadProgress'],
'fileTypeDesc':'支持的格式:',
'formData': {'ctrlid' : 1},
//允许上传的文件后缀
'fileTypeExts':'*.jpg;*.jpge;*.gif;*.png',
//上传文件的大小限制
'fileSizeLimit':'3MB',
// 'buttonImage':'upbutton.gif',
//浏览按钮的宽度
'width':'100',
//浏览按钮的高度
'height':'32',
//上传数量
'queueSizeLimit' : 1,
'onCancel':function(file) {
alert('The file ' + file.name + ' was cancelled.');
} ,
'onUploadSuccess':function(file, data, response){
var temp = eval("("+data+")"); //包数据解析为json 格式
alert(temp.res.msg);
},
'onUploadStart' : function(file) {
$("#files").uploadify("settings", "formData", { 'ctrlid': $('#abc').val() });
},
//在onUploadStart事件中,也就是上传之前,把参数写好传递到后台。
//返回一个错误,选择文件的时候触发
'onSelectError':function(file, errorCode, errorMsg){
switch(errorCode) {
case -100:
alert("上传的文件数量已经超出系统限制的"+$('#files').uploadify('settings','queueSizeLimit')+"个文件!");
break;
case -110:
alert("文件 大小超出系统限制的"+$('#files').uploadify('settings','fileSizeLimit')+"大小!");
break;
case -120:
alert("文件 大小异常!");
break;
case -130:
alert("文件 类型不正确!");
break;
}
},
//检测FLASH失败调用
'onFallback':function(){
alert("您未安装FLASH控件,无法上传图片!请安装FLASH控件后再试。");
},
});
});
</script>
</head>
<body>
<div id="fileQueue"></div>
<input type="file" name="files" id="files" />
<input id="abc" type="text">
<a href="javascript:$('#files').uploadify('upload');">确定上传</a>
<div id="result"></div><!--显示结果-->
</body>
</html>
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
- 72.
- 73.
- 74.
- 75.
- 76.
- 77.
- 78.
- 79.
- 80.
- 81.
- 82.
- 83.
- 84.
后台代码
package upload;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import net.sf.json.JSONObject;
import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
@SuppressWarnings("serial")
public class UploadFileAction extends ActionSupport{
// private String getfile = null;
private File files = null;
private String title = null;
private String filesFileName = null;
private String filesContentType = null;
private String ctrlid;
private JSONObject res;
public JSONObject getRes() {
return res;
}
public void setRes(JSONObject res) {
this.res = res;
}
public String getCtrlid() {
return ctrlid;
}
public void setCtrlid(String ctrlid) {
this.ctrlid = ctrlid;
}
public String getImageTimeName(String fileName){
Date date=new Date();
SimpleDateFormat sd=new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss_SSS");
return sd.format(date)+fileName.substring(fileName.lastIndexOf('.'));
}
public String execute() throws Exception {
String realpath = ServletActionContext.getServletContext().getRealPath("/images");
String nowName=getImageTimeName(filesFileName);
String realNamepath=realpath+"\\"+nowName;
String relativePaht="images\\"+nowName;
System.out.println(this.getCtrlid());
try {
System.out.println(nowName);
System.out.println(realNamepath);
System.out.println(relativePaht);
if (files != null) {
File savefile = new File(new File(realpath), nowName);
if (!savefile.getParentFile().exists()){
savefile.getParentFile().mkdirs();
}
FileUtils.copyFile(files, savefile);
Map<String, Object> map=new HashMap<String, Object>();
map.put("msg", "上伟成功!传递参数为:"+this.getCtrlid());
this.setRes(JSONObject.fromObject(map));
}
} catch (Exception e) {
e.printStackTrace();
}
return SUCCESS;
}
public File getFiles() {
return files;
}
public void setFiles(File files) {
this.files = files;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getFilesFileName() {
return filesFileName;
}
public void setFilesFileName(String filesFileName) {
this.filesFileName = filesFileName;
}
public String getFilesContentType() {
return filesContentType;
}
public void setFilesContentType(String filesContentType) {
this.filesContentType = filesContentType;
}
}
- 1.
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
- 17.
- 18.
- 19.
- 20.
- 21.
- 22.
- 23.
- 24.
- 25.
- 26.
- 27.
- 28.
- 29.
- 30.
- 31.
- 32.
- 33.
- 34.
- 35.
- 36.
- 37.
- 38.
- 39.
- 40.
- 41.
- 42.
- 43.
- 44.
- 45.
- 46.
- 47.
- 48.
- 49.
- 50.
- 51.
- 52.
- 53.
- 54.
- 55.
- 56.
- 57.
- 58.
- 59.
- 60.
- 61.
- 62.
- 63.
- 64.
- 65.
- 66.
- 67.
- 68.
- 69.
- 70.
- 71.
- 72.
- 73.
- 74.
- 75.
- 76.
- 77.
- 78.
- 79.
- 80.
- 81.
- 82.
- 83.
- 84.
- 85.
- 86.
- 87.
- 88.
- 89.
- 90.
- 91.
- 92.
- 93.
- 94.
- 95.
- 96.
- 97.
- 98.
- 99.
- 100.
- 101.
- 102.
- 103.
- 104.
- 105.
- 106.
- 107.
- 108.
- 109.
- 110.
- 111.
- 112.
运行结果
注意事项
注意struts2的json返回结果配置
注意JSON包的引入commons-beanutils-1.7.0.jar commons-collections-3.2.jar commons-lang-2.4.jar commons-logging-1.1.jar ezmorph-1.0.4.jar json-lib-2.2.2-jdk15.jar