首先感谢funnyque 大佬写出了这么好用的插件,解决了我多文件上传的问题。

但是这个插件 我发现只能通过 formparam 静态传参。

我这里有个业务场景:

         获取datagrid的选中行的主键id,将文件上传后, 通过选择的主键id 保存文件名称和文件路径到数据库。

如何获取到动态传参呢? 我在百度上翻阅无果之后,只有硬着头皮翻源码了。

在292行 发现了formparam的赋值代码。 我们修改它。

easy ui 上传附件demo_选择器

 

 

这里可以通过硬编码的方式强行修改 formparam里的 key 对应的value值 。(我的formparam 里的key名字叫 objId)

easy ui 上传附件demo_上传_02

但是这样太死板了。把id选择器的id写死了, 其他datagrid页面不好弄。

正文(嫌啰嗦的直接翻到这里复制代码就好了)

=========================================

于是我在formparam中加了 gridId 参数 ,用来传输 ID选择器的 id名

easy ui 上传附件demo_上传_03

然后再刚才把刚才写死的那段取值代码  $('#need-datagrid').datagrid('getSelected')

改成动态的 $('#' + $idSelected ).datagrid('getSelected') 。 

easy ui 上传附件demo_上传_04

这样的话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]);
                     }
                 }
               }