layui+springboot 上传数据进行处理的一些问题
问题1:统计文件列表的文件数量
files中只有pushFile()等四个方法,我们需要知道一个Object对象中的对象个数,我们可以Object
的Object.keys(obj)
方法
choose: function choose(obj) {
files = this.file = obj.pushFile();
obj.preview(function (index, file, result) {
imgCount = Object.keys(files).length;
});
}
问题2:需要得到我们最新添加的文件,这里我只需要文件列表里是我最新添加的这个文件,我只需要这一个文件,我们使用for循环删除所有的文件,在将最新的文件加进去
choose: function(obj){
var files = this.files;
for (let x in files) {
//先来个for循环清空队列
delete files[x];
}
var that = this;
files = this.files = obj.pushFile(); //将选择的文件添加
问题3:layui当文件列表比限制的文件数多一个时才会提示文件数量限制,当我们将文件数量设置为1时,我们现在需要table只显示我们最新选择的文件,但是我们发现table最多可以出现2个记录,我们可以在添加前,进行表单清空,
- 这是我们将文件数量限制为1,我们发现,第一次选择文件会出现
文件.xlsx
,第二次点击选择选择文件会添加红色方框的这条记录,但是上传时就会提醒我们只能上传一条,所以这时我们不需要第一条记录
//表单清空
var tr = that.elemList.find('tr');
tr.remove();
//读取本地文件
obj.preview(function(index, file, result){
......}
问题4:我们发现进度已经达到了100%,但是进度条没有显示,我们查看参数
我们发现index未定义,说明没有传值进来,这时我们对参数进行处理,这里我们因为只有一条数据,所以将表单的第一条记录id命名为progress-demo
,
问题5: 这时前端处理好了,我们将数据传入到后台
我们填写url
var uploadListIns = upload.render({
elem: '#test-upload-testList'
,elemList: $('#test-upload-demoList') //列表元素对象
,url: 'http://localhost:8080/file/importExcel'
,accept: 'file'
,exts: 'xls|xlsx'
,multiple: false
,number: 1
,auto: false
,bindAction: '#test-upload-testListAction'
,choose: function(obj){
问题6:后台如何处理
1.这里注意返回的json格式,我们看一下layui的要求
2.对于文件我们如何处理,我们使用transfer方法,将file文件复制到path的路径中,然后进行处理
file.transferTo(new File(path))
package com.knowledge.management.device.controller;
import com.knowledge.management.device.utils.Neo4jUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import