js上传文件、文件夹

一、html

<el-button type="primary" class="upload-file">
  上传文件
  <input
    ref="file_ref"
    type="file"
    class="file-input"
    multiple
    @change="uploadFile($event, true)"
  />
</el-button>
<el-button type="primary" class="upload-file">
  上传文件夹
  <input
    ref="folder_ref"
    type="file"
    class="file-input"
    webkitdirectory
    @change="uploadFile($event, false)"
  />
</el-button>

二、css

  .upload-file {
    position: relative;
    .file-input {
      position: absolute;
      left: 0;
      top: 0;
      width: 100%;
      height: 100%;
      opacity: 0;
      cursor: pointer;
    }
  }

三、js

  // 上传文件夹
  const file_ref = ref()
  const folder_ref = ref()

  const uploadFile = (e, is_file) => {
    const path = info.filePathList.join('/')
    const pathValue = path ? `root/` + path : ''
    let file_lists = Object.values(e.target.files)
    console.log(file_lists)
    if (file_lists.length > 0) {
      file_lists.forEach((item) => {
        const formData = new FormData()
        formData.append('fileName', item.name)
        formData.append('file', item)
        formData.append('filePath', pathValue)
        if (!is_file) {
          let folderName = item.webkitRelativePath.split('/')
          folderName.pop()
          formData.append('dirName', folderName.join('/'))
        }

        workUpload(formData)
          .then((res) => {})
          .catch((err) => {
            console.log(err)
          })
      })
      nextTick(() => {
        file_ref.value.value = null
        folder_ref.value.value = null
      })
      proxy.$message({
        message: '已添加至传输列表',
        type: 'success',
      })
    }
  }

//filePathList 文件目录list 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天高任鸟飞dyz

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值