layui多文件上传与下载示例

第一次写文件上传,不知道怎么下手。 幸好有万能layui 方便了很多
HTML

`
产品文件上传
文件名 大小 状态 操作
`

js

`layui.use('upload', function(){
  var $ = layui.jquery
  ,upload = layui.upload;
  
  
  var demoListView = $('#demoList')
  ,uploadListIns = upload.render({
    elem: '#testList'
    ,url:  Feng.ctxPath + '/productInfo/uploadFiles'
    ,accept: 'file'
    ,multiple: true
    ,auto: false
    ,bindAction: '#testListAction'
    ,data:{id: function(){
        return $('#id').val();
    }
    }
    ,choose: function(obj){   
      var files = this.files = obj.pushFile(); // 将每次选择的文件追加到文件队列
      // 读取本地文件
      obj.preview(function(index, file, result){
        var tr = $([''
          ,''+ file.name +''
          ,''+ (file.size/1014).toFixed(1) +'kb'
          ,'等待上传'
          ,''
            ,''
            ,''
          ,''
        ,''].join(''));
        
        // 单个重传
        tr.find('.demo-reload').on('click', function(){
          obj.upload(index, file);
        });
        
        // 删除
        tr.find('.demo-delete').on('click', function(){
          delete files[index]; // 删除对应的文件
          tr.remove();
          uploadListIns.config.elem.next()[0].value = ''; // 清空 input file
															// 值,以免删除后出现同名文件不可选
        });
        
        demoListView.append(tr);
      });
    }
    ,done: function(res, index, upload){
      if(res.code == 0){ // 上传成功
        var tr = demoListView.find('tr#upload-'+ index)
        ,tds = tr.children();
        tds.eq(2).html('上传成功');
        tds.eq(3).html(''); // 清空操作
        return delete this.files[index]; // 删除文件队列已经上传成功的文件
      }
      this.error(index, upload);
    }
    ,error: function(index, upload){
      var tr = demoListView.find('tr#upload-'+ index)
      ,tds = tr.children();
      tds.eq(2).html('上传失败');
      tds.eq(3).find('.demo-reload').removeClass('layui-hide'); // 显示重传
    }
  });
})`

controller


    /**
    	 * 文件上传
    	 * 
    	 * @param file
    	 * @param request
    	 * @return
    	 */
    	@RequestMapping("/uploadFiles")
    	@ResponseBody
    	public ResponseData uploadFiles(@RequestPart("file") MultipartFile file, Long id, HttpServletRequest request) {
    		fileInfoService.uploadFile(file, id, fileProperties.getProdPath());
    		HashMap map = new HashMap<>();
    		map.put("fileId", IdWorker.getIdStr());
    		return ResponseData.success(0, "上传成功", map);
    	}

controller调用的uploadFile方法


     /**
         * 上传文件
         * uploadFile方法重载,需要传父表id,应对一条记录对应多个文件的情况
         * @author 
         * @Date 2019-08-21 
         * @return
         */
        public String uploadFile(MultipartFile file,Long pid,String fileUploadPath ) {
    
            //生成文件的唯一id
            String fileId = IdWorker.getIdStr();
    
            //获取文件后缀
            String fileSuffix = ToolUtil.getFileSuffix(file.getOriginalFilename());
    
            //获取文件原始名称
            String originalFilename = file.getOriginalFilename();
    
            //生成文件的最终名称
            String finalName = fileId + "." + ToolUtil.getFileSuffix(originalFilename);
    
            try {
                //保存文件到指定目录
                String fileSavePath = getFileUploadPath(fileUploadPath);
                File newFile = new File(fileSavePath + finalName);
                file.transferTo(newFile);
    
                //保存文件信息
                FileInfo fileInfo = new FileInfo();
                fileInfo.setFileId(Long.valueOf(fileId));
                fileInfo.setFilePid(pid);
                fileInfo.setFileName(originalFilename);
                fileInfo.setFileSuffix(fileSuffix);
                fileInfo.setFilePath(fileSavePath + finalName);
                fileInfo.setFinalName(finalName);
    
                //计算文件大小kb
                long kb = new BigDecimal(file.getSize())
                        .divide(BigDecimal.valueOf(1024))
                        .setScale(0, BigDecimal.ROUND_HALF_UP).longValue();
                fileInfo.setFileSizeKb(kb);
                this.save(fileInfo);
            } catch (Exception e) {
                log.error("上传文件错误!", e);
                throw new ServiceException(BizExceptionEnum.UPLOAD_ERROR);
            }
    
            return fileId;
    
        }

下载

下载就比较简单了 直接用个标签 href=""写文件的路径就OK了

显示的下载名称

你可能感兴趣的:(笔记,layui,上传,下载)