getFile()文件上传问题

        我在做文件上传功能的时候遇到一个问题,getFile()方法中的参数只有填file的时候才能正常运行。填写其他的值,文件能上传,但是getFile()方法获取的值为空。 



       //后台代码

       public void uploadMusic(){

UploadFile uploadFile = getFile("file");

System.out.println(uploadFile);

upload(uploadFile, MUSIC_BUKECT);

}


         //前台代码

        

        <div class="layui-form-item">

                    <label class="layui-form-label">音乐文件</label>

                    <div class="layui-input-block" style="backgournd-color:red;">

                      <button type="button" lay-data="{accept: 'audio'}" class="layui-btn layui-btn-blue" id="file">

  <i class="layui-icon">&#xe67c;</i>上传文件

  </button>

  <input type="text" name="music" id="music"/>

                        </div>

           </div>

        //js 代码

        

layui.use('upload', function(){

  var upload = layui.upload;

   

  //执行实例

  var uploadInst = upload.render({

    elem: '#file' //绑定元素

    ,url:  api.UPLOAD_MUSIC_URL

    ,done: function(res){

    console.log(res);

      //上传完毕回调

    }

    ,error: function(){

      //请求异常回调

    }

  });

});


评论区

JFinal

2020-07-10 16:40

getFile("file"); 中的参数 "file" 对应于你客户端的 elem: '#file',进而对应你的 input type="file" name="flile" 的表单域

解决办法是,要么让前端的 name = 的值与 getFile 参数一致,要么不带参,例如:
getFile();
getFiles();

杜福忠

2020-07-10 17:14

读一下 layui.upload 的源码就知道是怎么回事了, layui.upload 里面是创建了一个零时表单enctype="multipart/form-data" 然后里面拼接的 input file组件 name=‘file’所以提交到后台 name=‘file’ 了

源计划-岚

2020-07-11 08:42

@JFinal 谢谢波总解答。

源计划-岚

2020-07-11 08:43

@杜福忠 谢谢大神解答,完美地解决了我的疑惑。我记得我以前用layui-1.0.9版本的时候倒没有遇到这个问题。可能是layui-2X做了一些改变。

热门反馈

扫码入社