对上传的文档进行校验:
$(document).ready(function() {
$("#uploadify").uploadify({
'uploader' : '../resources/uploadfile/js/uploadify.swf', //uploadify.swf 文件的相对路径,默认值:uploadify.swf
// 'checkScript' :
// '../resources/uploadfile/checkDoc.jsp?clno=101',
// //用来判断上传选择的文件在服务器是否存在的后台处理程序的相对路径
'script' : '../resources/uploadfile/uploadDoc.jsp', //后台处理程序的相对路径
// 'scriptData' : {"clno" : $("#newclno").val()},
// //传参,使用scriptData需要先设置'method' : 'GET'
'cancelImg' : '../resources/uploadfile/images/cancel.png', //选择文件到文件队列中后的每一个文件上的关闭按钮图标
'folder' : '', //上传文件存放的目录,此处可以在后台认为设置// 'method' : 'Get', //提交方式Post 或Get 默认为Post
'queueID' : 'fileQueue', //文件队列的ID,该ID与存放文件队列的div 的ID一致
'fileDesc' : '请选择doc,docx,xls,xlsx文件', //这个属性值必须设置fileExt属性后才有效,用来设置选择文件对话框中的提示文本
'fileExt' : '*.doc;*.docx;*.xls;*.xlsx', //设置可以选择的文件的类型,格式如:'*.doc;*.xls'
'queueSizeLimit' : 100, //当允许多文件生成时,设置选择文件的个数,默认值:999
'auto' : false, //设置为true当选择文件后就直接上传了,为false 需要点击上传按钮才上传
'multi' : true, //设置为true时可以上传多个文件
'sizeLimit' : 1024*1024*10, //上传文件的大小限制,单位为字节
'simUploadLimit' : 2, //允许同时上传的个数默认值:1
// 'onInit' : function(){alert("1");}, //做一些初始化的工作
'onSelect' : function(event, queueID, fileObj) { //选择文件时触发
saveDocName(fileObj.name);
//
$("#uploadify").uploadifySettings('scriptData',
// {"clno" : $("#newclno").val()});
// //可以动态修改上面的那些key值
$("#uploadify").uploadifySettings('script', '../resources/uploadfile/uploadDoc.jsp?clno='+$("#newclno").val());
},
//'onSelectOnce' : function(event,data){ alert("您共选择了
"+data.fileCount+"个文件!");}, //在单文件或多文件上传时,选择文件时触发// 'onOpen' : function(event,queueId,fileObj){}
// //点击上传时触发,如果auto设置为true则是选择文件时触发,如果有多个文件
上传则遍历整个文件队列
// 'onComplete' :
// function(event,queueId,fileObj,response,data){}
// //文件上传完成后触发,每个文件上传完成后就会触发
'onAllComplete' : function(event, data) { //文件队列中所有的文件
上传完成后触发
alert("上传的文件个数:" + data.filesUploaded + "\r\n" +
"出现错误的个数:"+ s + "\r\n"+
"文件大小:" + data.allBytesLoaded
);
reDnameString();
},
'onCancel' : function(event,queueId,fileObj,data) { //当点
击文件队列中文件的关闭按钮或点击取消上传时触发
// alert("删除:"+fileObj.name);
cancelDoc(fileObj.name);
},
'buttonText' : 'BROWSE'// 浏览按钮的文本,默认值:BROWSE。暂不支持
中文,若要用中文,可使用buttonImg属性
// 'buttonImg' : '', //浏览按钮的图片的路径。
/
/ 'hideButton' : '', //设置为true则隐藏浏览按钮的图片。
// 'rollover' : true //值为true和false,设置为true时当鼠标移到浏览按钮上
时有反转效果。
});
});
var saveDoc = new Array(); // 暂存文件的名称的数组
var conflictDoc = new Array(); // 暂存与数据库冲突的文件
function saveDocName(dname){ //将上传的文件队列保存到暂存数组saveDoc中saveDoc.push(dname); // 入栈操作
}
function cancelDoc(cancelName) { //取消队列中的上传文件时将暂存数组saveDoc
中相应的值删除
var count = saveDoc.length; // 获取暂存文件的个数
var index;
for(var i=0; i < count; i++ ){
var doc = saveDoc[i];
if(cancelName == doc) {
index = i; // 查到删除的文件所在的位置
}
}
saveDoc.splice(index,1); // 删除下标为index的元素
var newCount = saveDoc.length; // 获取暂存文件的个数
if(newCount > 0) {
saveConflict(newCount); //判断是否有冲突并将冲突文件保存到暂存数组saveConflict
var conflictCount = conflictDoc.length; // 获取冲突文件的个数
if(conflictCount > 0) {
handleConflict(conflictCount); //处理冲突
} else {
}
} else {
}
}
function checkConflict(){ //点击校验按钮时检查是否有冲突,并将冲突的文件保存到conflictDoc数组中
var clno = null;
clno = $("#clno").val();
if(clno.length > 0) {
var count = saveDoc.length; // 获取暂存文件的个数
if(count > 0) {
saveConflict(count); //判断是否有冲突并将冲突文件保存到暂存数组saveConflict
var conflictCount = conflictDoc.length; // 获取冲突文件的个数
if(conflictCount > 0) {
handleConflict(conflictCount); //处理冲突
} else {
alert("经校验没有冲突,请上传!");
}
} else {
alert("请先选择上传的文件!");
}
} else {
alert("请先选择上传文件的归属目录!");
}
}
function saveConflict(count) { //判断是否有冲突并将冲突文件保存到暂存数组saveConflict
conflictDoc = []; // 将冲突数组清空
var jsonStr = ElementById("formAdd:dnameString").value;
// 获取文件种类下的文档字符串
jsonStr = eval(jsonStr); // 将字符串转换为json字符串格式
for(var i=0; i < count; i++ ){
var doc = saveDoc[i]; // 取出暂存的文件名
js获取json的key和valuevar isConflict; // 冲突文件名
for(var j=0; j < jsonStr.length; j++) {
isConflict = jsonStr[j].dname; // 取出json串中的文档名称
if(doc == isConflict) {
conflictDoc.push(doc); // 若文件冲突,将冲突的文件名保存下来}
}
}
}
function handleConflict(conflictCount) { //处理冲突
var divdev = ElementById("conflict");
var table = ateElement("table"); //创建table
table.setAttribute("style","width:95%;border: 1px solid red;");
for(var i=0; i < conflictCount; i++) { //将冲突文件显示在页面上var tr = ateElement("tr");
var td = ateElement("td");
td.setAttribute("style","width:70%;");
var span = ateElement("span");
span.setAttribute("style","color:red;");
span.innerHTML = conflictDoc[i];
td.appendChild(span);
var td2 = ateElement("td");
td2.setAttribute("style","width:30%;");
var span2 = ateElement("span");
span2.setAttribute("style","color:red;");
span2.innerHTML = "若上传将会覆盖原文件!";
td2.appendChild(span2);
tr.appendChild(td);
tr.appendChild(td2);
table.appendChild(tr);
}
divdev.appendChild(table);
}
function check() { //点击上传按钮时进行非空校验,上传后将暂存数组
saveDoc,conflictDoc清空
var clno = null;
clno = $("#clno").val();
if(clno.length > 0) {
var count = saveDoc.length; // 获取暂存文件的个数
if(count > 0) {
$('#uploadify').uploadifyUpload();
}else {
alert("请先选择上传的文件!");
}
} else {
alert("请先选择上传文件的归属目录!");
}
}
function reDnameString() { //上传完成后清空暂存数组,并刷新json串ElementById("conflict").innerHTML = ""; //上传完成后将冲突列表清空
saveDoc = []; // 上传后将暂存的数组清空
conflictDoc = []; // 上传后将冲突数组清空
}
页面上的按钮:
1.校验按钮:
<a4j:commandLink value=" 校验"onclick="checkConflict();"/>
2.确认按钮:
<h:commandButton type="button"value="确认上传"onclick="return check();"/>
3.上传完后刷新页面上保存数据库中已有文件的json串dnameString:
<h:inputHidden id="dnameString"
value="#{klbInfoRegBaseBean.dnameString}"/>
<a4j:commandLink id="uploadAfter"
actionListener="#{klbInfoRegBaseBean.selectDocList}"
reRender="dnameString">
<a4j:actionparam name="paraminfo"
value="ElementById('clno').value"
assignTo="#{klbInfoRegBaseBean.clno}"noEscape="true"/>
</a4j:commandLink>
4.显示冲突信息的div:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论