文件上传data参数怎么接收外面的变量???

提问 已结
33 973
猴瘟萬岁
猴瘟萬岁 2017-10-9
悬赏:20飞吻
文件上传data参数无法获取变量
回帖
  • @猴瘟萬岁 我本地测过 参数获取正常
    是你的后端写的有问题
    0 回复
  • upload.render({
    elem: '.test'
    data:{id: 123, abc: 'xxx'}
    ,done: function(res, index, upload){
    //获取当前触发上传的元素,一般用于 elem 绑定 class 的情况,注意:此乃 layui 2.1.0 新增
    var item = this.item;
    }
    })
    0 回复
  • @火影村7代目 不行!!!!!!!!!,

    ----------------------1------------------------
    data:{"courseid":$("#courseid").val()}
    ————————————2————————
    var courseid= 2;
    var demoListView = $('#demoList');
    upload.render({
    elem: '#testList' //绑定元素
    ,url: '/admin/upfilelist' //上传接口
    ,method: 'post'//默认post
    ,data:{"courseid":courseid} //可选项。额外的参数,如:{id: 123, abc: 'xxx'}
    ,auto:false//是否自动上传
    ,accept:'file'//指定允许上传的文件类型,可选值有:images(图片)、file(所有文件)、video(视频)、audio(音频)
    ,exts: 'zip|rar|7z|doc|xls|avi|mp4|rmvb'
    ,bindAction:"#testListAction"//指向一个按钮来触发
    ,size:614400//最大600M,单位kb
    0 回复
  • use了吗
    layui.use('upload', function () {
    var upload = layui.upload;
    //执行实例

    });
    0 回复
  • 服务端获取对象是Request.Form["courseid"]哦
    0 回复
  • @火影村7代目 服务器我这么获取的 哈哈,不行
    @ResponseBody
    @RequestMapping("/upfilelist")
    public JsonResult upFileList(HttpServletRequest request,
    @RequestParam(value = "courseid") long courseid,
    @RequestParam(value = "file") MultipartFile[] files) {
    我看你那个行不行
    0 回复
  • @火影村7代目 你那后台是怎么获取的,我们是用的spring+springmvc+mybatis 后台
    0 回复
  • @火影村7代目 照我哪有写,前端写{“courseid”,1}后台是获取的到,只是改为变量就不行了
    0 回复
  • 好吧 我的是C# 我帮不了你了
    0 回复
  • @火影村7代目 嗯嗯,好的,感谢
    0 回复
  • var courseid= 2;
    var demoListView = $('#demoList');
    upload.render({
    elem: '#testList' //绑定元素
    ,url: '/admin/upfilelist' //上传接口
    ,method: 'post'//默认post
    ,data:{"courseid":courseid} //可选项
    这样都不行吗?
    0 回复
  • 0 回复
  • <div class="avatar-add">
    <p>建议尺寸168*168,支持jpg、png、gif,最大不能超过30KB</p>
    <input type="hidden" id="myval" value="123" />
    <div class="upload-img">
    <button class="layui-btn iUpload" lay-data="{url: '/res/ashx/upload.ashx'}"><i class="layui-icon"></i>上传图片</button>
    </div>
    <img id="myavatar" src="${user.avatar}">
    <span class="loading"></span>
    </div>
     layui.use('upload', function () {
    var upload = layui.upload;
    //执行实例
    upload.render({
    elem: '.iUpload',
    exts: 'jpg|png|gif|bmp|jpeg',
    data: { myval: $('#myval').val() },
    before: function (obj) { //obj参数包含的信息,跟 choose回调完全一致,可参见上文。
    //layer.load(); //上传loading
    //将每次选择的文件追加到文件队列
    //var files = obj.pushFile();
    //预读本地文件,如果是多文件,则会遍历。(不支持ie8/9)
    obj.preview(function (index, file, result) {
    //console.log(index); //得到文件索引
    //console.log(file); //得到文件对象
    //console.log(result);
    var img = new Image();
    img.src = result;
    if (img.width != '168') {
    console.log("图片尺寸不是168*168!当前宽度:" + img.width);
    }
    });
    },
    done: function (res, index, upload) {
    //alert(res)
    //假设code=0代表上传成功
    if (res.code == 0) {
    //do something (比如将res返回的图片链接保存到表单的隐藏域)
    console.log(res);
    $('#myavatar').attr('src', res.src);
    $('#user_avatar').attr('src', res.src);
    }
    }
    });
    });
    0 回复
  •  private string upload_avatar(HttpContext context)
    {
    var file = context.Request.Files[0];
    var data = context.Request.Form["myval"];
    var fileExt = System.IO.Path.GetExtension(file.FileName);
    var fileName = "/upload/avatar/" + DateTime.Now.Ticks + fileExt;
    var filePath = context.Server.MapPath(fileName);
    file.SaveAs(filePath);
    //更新用户头像
    //db.Execute("update k_users set avatar='" + fileName + "' where uid=" + uid);
    //重新写入cookies
    var userObj = db.SingleOrDefault<Poco_k_user>("select top 1 * from k_users where uid=@0", uid);
    string jsonUserInfo = App_Code.FlyWeb.getUserInfo(userObj);
    CookieHelper.SetObject("binGe_user", 86400, jsonUserInfo);

    StringWriter sw = new StringWriter();
    JsonWriter writer = new JsonTextWriter(sw);
    writer.WriteStartObject();
    writer.WritePropertyName("code"); writer.WriteValue(0);
    writer.WritePropertyName("msg"); writer.WriteValue("upload ok");

    writer.WritePropertyName("src"); writer.WriteValue(fileName);
    writer.WriteEndObject();
    writer.Flush();
    string jsonText = sw.GetStringBuilder().ToString();
    return JsonConvert.SerializeObject(jsonText);
    }
    0 回复
  • @火影村7代目 是后台接收的参数问题 ,不应该定义成long 应该是String
    0 回复
  • @火影村7代目 @ResponseBody
    @RequestMapping("/upfilelist")
    public JsonResult upFileList(HttpServletRequest request,
    @RequestParam("courseid") String courseid2,
    @RequestParam(value = "file") MultipartFile[] files) 这样就ok
    0 回复
  • @火影村7代目 大哥 在layer.open 中 type为1 content中写复选框的html代码怎么没有效果??
    0 回复
  • 复选框只能取值 哪来html代码 你贴来看看
    0 回复
  • @火影村7代目 嗯嗯 马上给你贴
    0 回复
  • @火影村7代目 //添加
    $("#add").click(function () {
    layer.open({
    type: 1,
    title:"添加班级",
    content:'<form class="layui-form" action=""><div class="layui-form-item"><label class="layui-form-label">单行输入框</label><div class="layui-input-block"><input type="text" name="title" lay-verify="title" autocomplete="off" placeholder="请输入标题" class="layui-input"></div></div><div class="layui-form-item"><label class="layui-form-label">验证必填项</label><div class="layui-input-block"><input type="text" name="username" lay-verify="required" placeholder="请输入" autocomplete="off" class="layui-input"></div></div><div class="layui-form-item" pane=""><label class="layui-form-label">原始复选框</label><div class="layui-input-block"><input type="checkbox" name="like1[write]" lay-skin="primary" title="写作" checked> <input type="checkbox" name="like1[read]" lay-skin="primary" title="阅读"> <input type="checkbox" name="like1[game]" lay-skin="primary" title="游戏" disabled></div></div></form>',
    anim: 2,
    area: ['650px', '320px'],
    btn: ['提交', '关闭'],
    0 回复
  • 0 回复
  • @火影村7代目 效果没有,日期这些好像都可以,下来没有式,文本框都可以
    0 回复
  • 别用这个方式,,,用加载iframe的
    //iframe层-父子操作
    layer.open({
    type: 2,
    area: ['700px', '450px'],
    fixed: false, //不固定
    maxmin: true,
    content: 'test/iframe.html'
    });
    0 回复
  • 把你的代码弄到content: 'test/iframe.html',,,方便修改
    0 回复
  • @火影村7代目 了解 66666666666
    0 回复
  • @火影村7代目 这样也好复用
    0 回复
  • 一叶情
    2017-10-10
    大兄弟,你都结帖了。。。。。
    layui文件上传,如果是动态传递参数,需要在
    before中改变参数,用法
    this.data = uploadData
    uploadData是你自己需要上传的参数
    0 回复
  • 猴瘟萬岁
    2017-10-12
    @一叶情 你说的这样呀,怎么不可以?


    var uploadData = $("select[name='course']").val();//首次获取下拉框值

    //监听下拉框
    form.on('select(mycourse)', function(data){
    uploadData = data.value;//得到被选中的值
    });

    //文件上传
    upload.render({
    ...
    data:{"mydata":uploadData},
    before: function(obj){ //obj参数包含的信息,跟 choose回调完全一致,可参见上文。
    this.data = uploadData; // uploadData是你自己需要上传的参数
    },
    ...
    });
    0 回复
  • 猴瘟萬岁
    2017-10-12
    @一叶情 大佬, this.data = {"courseid": uploadData}; 这样可以了,感谢
    0 回复
  • 猴瘟萬岁
    2017-10-12
    @一叶情 不要上面的 upload.render({
    ...
    //data:{"mydata":uploadData},//不要
    before: function(obj){ //obj参数包含的信息,跟 choose回调完全一致,可参见上文。
    this.data = uploadData; // uploadData是你自己需要上传的参数
    },
    ...
    });
    0 回复