当前位置: 首页> 教育> 培训 > web前端之上传文件夹、webkitdirectory

web前端之上传文件夹、webkitdirectory

时间:2025/9/10 3:54:53来源:https://blog.csdn.net/weixin_51157081/article/details/116915997 浏览次数:0次

MENU

  • 前言
  • element-ui写法
  • input写法


前言

1、以下代码只实现的单个文件夹的上传,原本需求是实现选择多个文件夹上传,但是没找到实现的方法。如果想实现多个文件夹上传,可以给这些文件夹新建一个父级文件夹,点击上传的时候选择父级文件夹,就能遍历该父级文件夹下的所有子集文件夹,这样就能实现多个文件夹上传了。
2、其他文章链接,文章内容并没有去实践,有兴趣的伙伴可以看看。


element-ui写法

html

<el-uploadclass="upload-demo"action="#":on-remove="fileRemove":on-change="fileChang"accept="":auto-upload="false":multiple="true":file-list="form.instFilePics"ref="uploadFile"
><el-button size="small" type="primary"><i class="el-icon-folder-opened"></i></el-button>
</el-upload>

JavaScrip

data() {return {form:{instFilePics:[],instFile:[]},}
},
mounted() {// 以下代码有时候可能写法不同,// 可在控制台打印一层一层的找input,// 再加webkitdirectory属性this.$refs.uploadFile.$children[0].$refs.input.webkitdirectory = true;
},
methods:{fileChang(file, fileList, name) {this.form.instFilePics = fileList;},fileRemove(file, fileList, name) {this.form.instFilePics = fileList},
}

解析

html
01、<el-upload>是一个Element UI的上传组件,用于上传文件。
02、class="upload-demo"为上传组件添加一个CSS类,用于样式定制。
03、action="#"指定上传的服务器地址,这里设置为#,表示不进行实际的上传操作。
04、:on-remove="fileRemove"监听文件被移除的事件,当文件被移除时,调用fileRemove方法。
05、:on-change="fileChang"监听文件变化的事件,当文件发生变化时,调用fileChang方法。
06、accept=""指定可以上传的文件类型,这里为空,表示不限制文件类型。
07、:auto-upload="false"设置为false表示上传操作不会自动进行,需要手动触发。
08、:multiple="true"设置为true表示支持多文件上传。
09、:file-list="form.instFilePics"绑定一个文件列表,这个列表将显示在上传组件中。
10、ref="uploadFile"为上传组件设置一个引用,可以在Vue实例中通过this.$refs.uploadFile访问到这个组件。


JavaScrip
1、data()定义组件的数据,其中form对象包含两个数组,instFilePics用于存储上传的文件列表,instFile可能用于其他文件上传的数组。
2、mounted()在组件挂载到DOM后执行,通过this.$refs.uploadFile.$children[0].$refs.input.webkitdirectory = true;设置文件输入框支持选择文件夹。
3、methods定义两个方法,fileChang和fileRemove。
3.1、fileChang(file, fileList, name)当文件列表发生变化时,更新form.instFilePics为最新的文件列表。
3.2、fileRemove(file, fileList, name)当文件被移除时,更新form.instFilePics为最新的文件列表。


总结
代码段实现一个文件上传组件,用户可以选择文件或文件夹进行上传,上传的文件列表会显示在界面上。通过fileChang和fileRemove方法,可以处理文件列表的变化和文件的移除操作。


input写法

html

<div class="select-files-btn"><el-button type="primary" @click="choiceFiles"><i class="el-icon-folder-opened"></i></el-button><input ref="filElem" type="file" multiple class="upload-file" webkitdirectory @change="getFile"/>
</div>

JavaScrip

methods: {choiceFiles(){// 以下代码有时候写法不同,// 可在控制台打印一层一层的找inputthis.$refs.filElem.click();},getFile(e){let files = e.target.files;  console.log(files);}
}

解析

html
1、<div class="select-files-btn">是一个包含按钮和文件输入框的容器。
2、<el-button type="primary" @click="choiceFiles">是一个Element UI的按钮组件,类型为primary,表示按钮是主要操作按钮。@click="choiceFiles"是一个事件监听器,当按钮被点击时,会调用Vue实例中的choiceFiles方法。
3、<i class="el-icon-folder-opened"></i>是一个图标,使用Element UI的图标类,显示一个打开的文件夹图标。
4、<input ref="filElem" type="file" multiple class="upload-file" webkitdirectory @change="getFile"/>是一个文件输入框,允许用户选择多个文件(multiple属性)。ref="filElem"是一个Vue的引用,允许在Vue实例中直接访问这个DOM元素。webkitdirectory属性允许用户选择文件夹,而不是单个文件。@change="getFile"是一个事件监听器,当文件选择框的值发生变化时,会调用Vue实例中的getFile方法。


JavaScrip
1、choiceFiles()方法会在用户点击按钮时被调用。它通过this.$refs.filElem.click()模拟点击文件输入框,允许用户选择文件而不直接点击输入框。
2、getFile(e)方法会在文件输入框的值发生变化时被调用(即用户选择了文件后)。e.target.files包含用户选择的所有文件,然后这些文件会被打印到控制台。


总结
代码段提供一个用户界面,允许用户通过点击一个按钮来选择文件或文件夹,并在选择后将文件信息打印到控制台。这通常用于文件上传功能。

关键字:web前端之上传文件夹、webkitdirectory

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: