在layui上传图片的时候,主要是分两步,首先点击上传图片按钮,再此按钮上绑定图片上传的id,在这里请求后台上传文件接口,后台接口返回上传图片的路径值,然后再是提交表单把这个路径值提交到后台存到数据库。
这里有个问题就是,如果点击一次就请求一下上传图片的接口,就会上传一张图片,放到服务器上,而如果这张图片并不是你想要的,又点击了一下上传图片更改了一下,那又会上传一张图片到服务器上,这样只有最后一张图片才是真正有利用价值的图片,其他在这之前的,都是没用的图片,造成服务器内存占用。针对这个在layui有一个属性
auto: false,bindAction: '#adminprogram-btn'
这是把自动上传关掉,配合第二个属性使用,用id绑定一个提交按钮,直到点击这个提交按钮之后图片才会请求后台接口,上传到服务器上,这里存在一个问题就是,提交按钮同时绑定了两个事件,一个是提交表单的监听,一个是这个图片上传的,而layui总是先执行获取数据在执行的上传图片,这样图片的路径值就一直有问题,对于这个问题,我在表单里面加了一个隐藏框,在上传成功的时候把后台接口返回的路径值赋值给隐藏框的value值,然后在获取数据的时候放到弹出层点击确定之前,在获取数据的时候用js重新获取隐藏框里面的value值,因为在提交的时候回调的data值里面的图片值是空的,接口还没有请求成功给隐藏框赋值。
附上代码:
上传成功之后给隐藏框赋值
在弹出确定层之后获取数据,图片的name值重新获取