前端上传文件夹,接口处一个个上传,第一个文件上传完才开始上传第二个文件

2 篇文章 0 订阅
1 篇文章 0 订阅

前端上传文件夹,接口处一个个上传,第一个文件上传完才开始上传第二个文件,开始用el-upload进行改造,没成功,就使用了input的type=file来实现该功能,不具备拖拽功能,拖拽的话没有系统提示,为了统一,就没加,提示如下:

大致页面如下:

完整代码:

//template部分
<div class="select-file">
              <span v-if="uploadFiles.length === 0" class="label-tips" @click="toggleFileInput">点击选择文件夹</span>
              <input 
                type="file" 
                id="fileInput" 
                :webkitdirectory="uploadFolder"
                :mozdirectory="uploadFolder"
                :odirectory="uploadFolder"
                @change="changeFiles"
              >
              <span v-if="uploadFiles.length !== 0" class="label-tips">已选择{{ uploadFiles.length }}个文件</span>
            </div>
<el-button type="primary" class="act-btn" @click="handleUploadFiles">上传文件夹</el-button>



//js部分

const uploadFiles = ref([])//上传文件夹的文件
const uploadedLength = ref(0) //已上传文件个数
const uploadFolder = reactive({
  type: Boolean,
  default: false
})
const successCount = ref(0) //成功文件个数
const failCount = ref(0) //文件加载失败个数

//方法
// 手动选择文件夹
//可以使用一些变量记录失败 成功的文件个数,在所有文件上传完之后给出相应的提示
const changeFiles = (event) => {
  console.log('[ files11 ] >', event.target.files)
  uploadFiles.value =  event.target.files
}
const toggleFileInput = () => {
  document.getElementById('fileInput').click();
}
const handleUploadFiles = async () => {
    successCount.value = 0
    failCount.value = 0
  for(let file of uploadFiles.value) {
    try {
      const formData = new FormData()
      formData.append('vs_id', configInfo.knowledge)
      formData.append('files', file)
      const response = await uploadFileApi(formData) //这里是关键
      if (response.code === 200) {
          //这里写成功的逻辑
        successCount.value++
    
      } else {
        failCount.value++
        //失败
      }
    } catch(error) {
       //失败
        failCount.value++
    } finally {
      nextTick(() => {
          const msg = `共上传${uploadedLength.value}个文件, ${successCount.value}个成功,    ${failDocCount.value}个失败`。
    uploadFiles.value = []
      })
    }
  }
}

这样子在tabs里面 代码有点冗余,要是使用一个组件,通过变量控制文件夹或者文件,并带有拖拽功能会更好,大家有更好的可以分享给我,感谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值