el-upload上传文件夹及springboot后端实现

el-upload上传文件夹及springboot后端实现

点击右面的上传图标选择文件夹
点击右面的上传图标选择文件夹

1、前端


前端用的vue2

 <el-upload
                          :action="upFiles"
                          :data="{path: wfLabel[i].label_path}"
                          :show-file-list="false"
                          ref="uploadlist"
                          :multiple="true"
                          :on-success="handleAvatarSuccess(i, index)"
                          :before-upload="beforeAvatarUpload"
                      >
                        <i class="el-icon-upload" ></i>

用el-upload标签multiple=“true”,上传文件夹原理是单个文件批量上传

 mounted() {
    this.$refs.uploadlist[0].$children[0].$refs.input.webkitdirectory = true;
  },

this.$refs.uploadlist[0].$children[0].$refs.input.webkitdirectory = true;放置位置视情况而定

2、后端


我的用户端和服务器在一台机器上,后端实现就直接复制

    /**
     * Auto-Calphad上传文件夹到指定目录   *
     * @param
     * 		path:指定目录
     * @return
     */
    @PostMapping(value = "/uploadFiles")
    public AjaxResult uploadFiles(MultipartFile file,String path) throws IOException {
        String originalFilename = file.getOriginalFilename();
        File filetem = File.createTempFile("temp", null);
        file.transferTo(filetem);   //sourceFile为传入的MultipartFile

        File newfile = new File(path+"\\input-data");  //获取新的文件File对象并生成文件
        if (!(new File(path+"\\input-data")).exists()) {  //判断目标文件夹是否存在不存在则创建
            (new File(path+"\\input-data")).mkdirs();
        }

        FileInputStream in = new FileInputStream(filetem);  //
        FileOutputStream out = new FileOutputStream(newfile+"\\"+originalFilename);
        byte[] buffer=new byte[2097152];
        int readByte = 0;
        //读取旧文件的流写入新文件里
        while((readByte = in.read(buffer)) != -1){
            out.write(buffer, 0, readByte);
        }
        in.close();
        out.close();
        Map map=new HashMap();
        map.put("name","input-data");
        return AjaxResult.success(map);
    }

这种实现方式访问了多次后端接口。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值