一.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>json
</table>服務器
=================================================================================app
二.js方法dom
//設置上傳數據的附加參數
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" onclick="fClear(this);"><input class="k-textbox" type="button" value="移除" style="text-align:left;color:blue;cursor:pointer;" readonly></td>';
mytr += '</tr>';
$("#myTr").after(mytr);
}
});ide
----------------------------------------------------------------------------------------------------------------------------------------------函數
//移除操做
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" onclick="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
}post
三.controllerui
/**
* 上傳文件
* @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 "文件不存在!";
}
}
}this