首先感谢funnyque 大佬写出了这么好用的插件,解决了我多文件上传的问题。
但是这个插件 我发现只能通过 formparam 静态传参。
我这里有个业务场景:
获取datagrid的选中行的主键id,将文件上传后, 通过选择的主键id 保存文件名称和文件路径到数据库。
如何获取到动态传参呢? 我在百度上翻阅无果之后,只有硬着头皮翻源码了。
在292行 发现了formparam的赋值代码。 我们修改它。
这里可以通过硬编码的方式强行修改 formparam里的 key 对应的value值 。(我的formparam 里的key名字叫 objId)
但是这样太死板了。把id选择器的id写死了, 其他datagrid页面不好弄。
正文(嫌啰嗦的直接翻到这里复制代码就好了)
=========================================
于是我在formparam中加了 gridId 参数 ,用来传输 ID选择器的 id名
然后再刚才把刚才写死的那段取值代码 $('#need-datagrid').datagrid('getSelected')
改成动态的 $('#' + $idSelected ).datagrid('getSelected') 。
这样的话easyui 动态传参就完成了。
代码 , 在页面上easyui js控件中
$('#easyContainer').easyUpload({
allowFileTypes : '*.jpg;*.doc;*.pdf',//允许上传文件类型,格式';*.doc;*.pdf'
allowFileSize : 100000,//允许上传文件大小(KB)
selectText : '选择文件',//选择文件按钮文案
multi : true,//是否允许多文件上传
multiNum : 5,//多文件上传时允许的文件数
showNote : true,//是否展示文件上传说明
note : '提示:最多上传5个文件,支持格式为doc、pdf、jpg',//文件上传说明
showPreview : true,//是否显示文件预览
url : '${path}/file/upload',//上传文件地址
fileName : 'file',//文件filename配置参数
formParam: {
gridId : 'need-datagrid', //'need-datagrid' 改成你的datagrid的ID选择器的id . 就是$("# 这个id")
fileFrom : 'cqNeed',
objId : null
},
timeout : 30000,//请求超时时间
okCode : 200,//与后端返回数据code值一致时执行成功回调,不配置默认200
successFunc : function(res) {
debugger
console.log('成功回调', res);
},//上传成功回调函数
errorFunc : function(res) {
console.log('失败回调', res);
},//上传失败回调函数
deleteFunc : function(res) {
console.log('删除回调', res);
}//删除文件回调函数
});
然后 打开 easyUpload.js 。大概在292行,把整个 if (option.formParam) { } 的判断条件改成下面的代码。注意那个 ‘objId’ 是我formparam中的值,你们改成你自己的。改好之后运行项目,大功告成。
if (option.formParam) {
debugger
var objId = 0;
//先取出datagrid的id选择器的 id,
var $idSelected = option.formParam['gridId'];
if($idSelected){
//通过id选择器获取 选中行id主键
var obj = $('#'+ $idSelected).datagrid('getSelected');
if (obj){
objId = obj.id;
}
}
for (key in option.formParam) {
if(key == 'objId'){ //objId 是我formparam 的key ,你可以改成你的
fd.append(key, objId);
}else{
fd.append(key, option.formParam[key]);
}
}
}