前端支持文件夹上传

前端支持文件夹上传

环境:vue2.0 + axios

1.webkitdirecetory属性

最核心的在于<input>标签上,type类型为file,添加webkitdirecetory属性,即可调出文件夹选择的窗口了

2.HTML部分

// 按钮用于触发弹出文件选择窗口
<el-button @click="addFinderToList">添加文件夹</el-button>
// 原来的按钮样式太丑了,所以隐藏掉
<input type="file" id="folder" ref="folder" webkitdirectory @change="getFolder" 
style="display: none;">

3.JS部分

methods: {
	addFinderToList() {
	    this.$refs.folder.click()
	},
	getFolder(e) {
	    //e.target.files为文件夹里面的文件
	    // 把文件夹数据放到formData里面,下面的files和paths字段根据接口来定
	    var form = new FormData()
	    e.target.files.forEach(file => {
	    	form.append('files', file)
	    	form.append('paths', file.webkitRelativePath)
	    })
	    this.$http.post('上传的url', form).then(res => {
	    	// 上传成功后的操作
			......
		}).catch(err => {
			// 上传失败后的操作
			......
		}).finally(() => {
			//无论上传成功与否,都把已选择的文件夹清空,否则选择同一文件夹没有反应
			document.getElementById('folder').value = ''
		})
	}
}
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值