一.form表单(截选)
<table id="myTable" border="0" cellspacing="0" cellpadding="0">
<tr id='myTr'>
<td class="label">合同附件:</td>
<td style="padding:0" width="23%"><input class="k-textbox" value="附件名称" readonly></td>
<td style="padding:0" width="18%"><input class="k-textbox" value="附件类型" readonly></td>
<td style="padding:0" width="18%"><input class="k-textbox" value="附件大小" readonly></td>
<td style="padding:0" width="18%"><input class="k-textbox" value="操作" readonly></td>
<td style="padding:0" width="8%"></td>
</tr>
</table>
=================================================================================
二.js方法
//设置上传数据的附加参数
var fileId = $("#fileId").val();
$("#file_upload").uploadify({
'buttonText' : '上传图片', //按钮图标文字
'swf' : '$!{rc.contextPath}/assets/js/upload/uploadify.swf', //上传图片的按钮(浏览)
'fileObjName' : 'files', //上传的文件对象名,与后台所传参数名保持一致
'queueID' : 'uploadfileQueue', //显示图片上传进度的div
'fileTypeExts' : '*.gif; *.jpg; *.png', //文件后缀限制 默认:'*.*'
'auto' : true, //选取图片后自动上传
'multi' : true, //图片可多选
'uploader' : "$!{rc.contextPath}/contract/uploadfiles?fileId="+fileId, //上传图片的请求路径
//选择文件的回调函数
'onSelect' : function(file) {
},
//载入时触发,隐藏上传进度条
'onInit' : function() {
$("#uploadfileQueue").hide();
},
//上传成功的回调函数(file:文件信息,data:controller返回的信息,response:有响应返回true)
'onUploadSuccess' : function(file,data,response){
//notify("上传图片成功!","warn");
//controller返回的信息为图片储存时用的名字,responseBody给其加了双引号,需去掉
data = data.replace(new RegExp('\"','g'),'');
//存储用的名字
var realName = data;
//图片上传成功后显示上传的图片信息
var mytr = '<tr>';
mytr += '<td style="padding:0"></td>';
mytr += '<td style="padding:0"><input class="k-textbox" value='+file.name+' readonly></td>';
mytr += '<td style="padding:0"><input class="k-textbox" value='+(file.type).substring(1)+' readonly></td>';
mytr += '<td style="padding:0"><input class="k-textbox" value='+parseInt(file.size/1024)+'KB readonly>';
mytr += '<input type="hidden" value='+realName+'></td>';
mytr += '<td style="padding:0" οnclick="fClear(this);"><input class="k-textbox" type="button" value="移除" style="text-align:left;color:blue;cursor:pointer;" readonly></td>';
mytr += '</tr>';
$("#myTr").after(mytr);
}
});
----------------------------------------------------------------------------------------------------------------------------------------------
//移除操作
function fClear(e){
//获取需要删除的tr
var $tr = $(e).closest("tr");
//删除tr
$tr.remove();
//获取需要删除的图片存储名
var $realName = $tr.find('input')[3].value;
//删除图片的请求
$.post("$!{rc.contextPath}/contract/removeFiles",{realName:$realName},function(data){
//notify(data,"warn");
},"json");
}
//将已有附件添加到表单
function addtr(){
#foreach($file in $files)
var name = "$!{file.name}";
var type = "$!{file.type}";
var size = "$!{file.fSize}";
var realName = "$!{file.realName}";
var mytr = '<tr>';
mytr += '<td style="padding:0"></td>';
mytr += '<td style="padding:0"><input class="k-textbox" value='+name+' readonly></td>';
mytr += '<td style="padding:0"><input class="k-textbox" value='+type+' readonly></td>';
mytr += '<td style="padding:0"><input class="k-textbox" value='+size+' readonly>';
mytr += '<input type="hidden" value='+realName+'></td>';
mytr += '<td style="padding:0" οnclick="fClear(this);"><input class="k-textbox" type="button" value="移除" style="text-align:left;color:blue;cursor:pointer;" readonly></td>';
mytr += '</tr>';
$("#myTr").after(mytr);
#end
}
三.controller
/**
* 上传文件
* @param file 文件
* @param request
* @param fileId 文件的id
* @return
*/
@ResponseBody
@RequestMapping(value="/uploadfiles",method = RequestMethod.POST)
public String upload(@RequestParam("files") MultipartFile[] file,HttpServletRequest request,String fileId){
//设置文件存储位置
String path = "C:\\files";
//String realPath = request.getSession().getServletContext().getRealPath("/uploadfiles");
File pathFile = new File(path);
//文件夹不存在则创建文件夹
if (!pathFile.exists()) {
pathFile.mkdirs();
}
//图片存储名
String realName = null;
for (MultipartFile f : file) {
try {
//解决上传中文图片为乱码的问题
String name = new String(f.getOriginalFilename().getBytes("ISO-8859-1"),"UTF-8");
//通过uuid为文件产生一个唯一的名字防止相同名称的文件覆盖
String type = name.substring(name.lastIndexOf("."));
realName = UUID.randomUUID()+type;
type = name.substring(name.lastIndexOf(".")+1);
String size = (f.getSize()/1024)+"KB";
//将文件copy上传到服务器
f.transferTo(new File(path + "/" + realName));
MyFile myFile= new MyFile(name,realName,type,size,fileId);
fileService.saveFiles(myFile);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return realName;
}
/**
* 移除文件操作
* @param name
* @param request
* @return
*/
@ResponseBody
@RequestMapping(value="/removeFiles",method=RequestMethod.POST)
public String removeFiles(String realName,HttpServletRequest request){
//获取文件存储位置
//String realPath = request.getSession().getServletContext().getRealPath("/uploadfiles");
String path = "C:\\files";
//在数据库中删除对应附件信息
fileService.deleteByRealName(realName);
File myFile = new File(path+"/"+realName);
//判断目录或文件是否存在
if (!myFile.exists()) { //不存在返回 false
return "文件不存在!";
} else {
// 判断是否为文件
if (myFile.isFile()&& myFile.exists()) {//路径为文件且不为空则进行删除
if(myFile.delete()){
return "删除成功!";
}else{
return "删除失败!";
}
} else {// 为目录时
return "文件不存在!";
}
}
}