关于upload上传,需要携带额外参数问题解决办法

讨论 未结 2 2769
AggerChen
AggerChen 2017-6-12
悬赏:5飞吻
在使用upload.js时,他是不支持携带额外参数的,但是我们有时候往往就需要携带一些参数,解决办法,就是修改源码咯~心姐,不要打我,我也是很无奈啊[泪]
通过查看源码,发现,他是组装了一个form表单,然后把input[type=file]拼接进去的,那么我们也可以拼接一些input[type=hidden]来一同上传我们的额外参数啊。[哈哈] 滑稽。
1.添加一个data配置,如图

2.修改upload.js源码。遍历传进来的data对象,生成str字符串,然后添加进去form,

然后就可以啦,亲测可以,


我是把压缩的源码一句一句分来看的,需要的可以拷贝去吧,我用的是1.0.7,。
/** layui-v1.0.7 LGPL License By http://www.layui.com */
;layui.define("layer",
function(e){
"use strict";
var a=layui.jquery,t=layui.layer,
i=(layui.device(),"layui-upload-enter"),
n="layui-upload-iframe",
r={icon:2,shift:6},
o={file:"文件",video:"视频",audio:"音频"},
s=function(e){this.options=e};
s.prototype.init=function(){
var e=this,t=e.options,r=0||r.append(u),s.each(function(r,s){
s=a(s);
var l=s.attr("lay-type")||t.type;
t.unwrap||(u='<div class="layui-box layui-upload-button">'+u+'<span class="layui-upload-icon"><i class="layui-icon"></i>'+(s.attr("lay-title")||t.title||"上传"+(o[l]||"图片"))+"</span></div>"),
u=a(u),
t.unwrap||u.on("dragover",function(e){
e.preventDefault(),
a(this).addClass(i)
}).on("dragleave",function(){
a(this).removeClass(i)
}).on("drop",function(){
a(this).removeClass(i)
}),
s.parent("form").attr("target")===n&&(t.unwrap?s.unwrap():(s.parent().next().remove(),s.unwrap().unwrap())),
s.wrap(u),
s.off("change").on("change",function(){
e.action(this,l)
}),
s.parent("form").append(str);
}
)},
s.prototype.action=function(e,i){
var o=this,s=o.options,u=e.value,l=a(e),
p=l.attr("lay-ext")||s.ext||"";
if(u){
switch(i){
case"file":if(p&&!RegExp("\\w\\.("+p+")$","i").test(escape(u)))
return t.msg("不支持该文件格式",r),e.value="";break;
case"video":if(!RegExp("\\w\\.("+(p||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(u)))
return t.msg("不支持该视频格式",r),e.value="";break;
case"audio":if(!RegExp("\\w\\.("+(p||"mp3|wav|mid")+")$","i").test(escape(u)))
return t.msg("不支持该音频格式",r),e.value="";break;
default:if(!RegExp("\\w\\.("+(p||"jpg|png|gif|bmp|jpeg")+")$","i").test(escape(u)))
return t.msg("不支持该图片格式",r),e.value=""
}
s.before&&s.before(e),l.parent().submit();
var c=a("#"+n),f=setInterval(function(){
var a;
try{
a=c.contents().find("body").text()
}catch(i){
t.msg("上传接口存在跨域",r),
clearInterval(f)
}
if(a){
clearInterval(f),c.contents().find("body").html("");
try{
a=JSON.parse(a)
}catch(i){
return a={},t.msg("请对上传接口返回JSON字符",r)
}"function"==typeof s.success&&s.success(a,e)}},30);
e.value=""}},e("upload",function(e){var a=new s(e=e||{});a.init()})});





回帖
本帖已设置禁止回复