通过input点击上传文件夹可以获取到webkitRelativePath

但是拖拽上传获取不到webkitRelativePath

$(".easy-uploader")[0].addEventListener("drop", e => {e.stopPropagation(); // 防止浏览器打开新的标签页(firefox)e.preventDefault(); // 阻止拖放后的浏览器默认行为if (fileType != 'dir') {//方法二,这种方法另辟蹊径,巧妙的运用了forEach函数,经实验可成功获取文件 filesList.forEach.call(e.dataTransfer.files, function (file) {filesList.push(file);}, false);that.node.list = $(".easy-uploader").parent().parent().children(".uploadLists").children(".drogList");that.fileObj = { fileList: filesList, isReady: true };that.node.input = $(".easy-uploader");that.updateFiles();that.configs.onChange && that.configs.onChange(filesList);filesList = [];}else if (fileType == 'dir') {let items = e.dataTransfer.items;for (let i = 0; i <= items.length - 1; i++) {let item = items[i];if (item.kind === "file") {let entry = item.webkitGetAsEntry();getFileFromEntryRecursively(entry,entry.name);that.node.list = $(".easy-uploader").parent().parent().children(".uploadLists").children(".drogList");that.node.input = $(this);   that.fileObj = objFile;if(i==items.length - 1) {                                   that.updateFiles();that.configs.onChange && that.configs.onChange(filesList);filesList = [];}}}function getFileFromEntryRecursively(entry,path) {if (entry.isFile) {entry.file(file => {var obj=file;obj.dir=entry.fullPath;if(obj.dir.indexOf('/')==0) obj.dir=obj.dir.replace('/','');filesList.push(file);objFile.fileList = filesList;objFile.fileList.name = path;objFile.isReady = true;}, e => { console.log(e); });} else {let reader = entry.createReader();reader.readEntries(entries => {entries.forEach(entry => getFileFromEntryRecursively(entry,path));}, e => { console.log(e); });}}}})

js 拖拽上传文件及文件夹相关推荐

  1. 拖拽上传及读取文件实现

    1.拖拽上传相关事件 2.拖拽上传简单实现 3.拖拽上传完整实现 4.读取文件实现 1.拖拽上传相关事件 相关事件: ondragenter 拖着东西进入 ondragleave 拖着东西离开 ond ...

  2. go语言接收html上传的文件,html5原生js拖拽上传(golang版)

    package main import ("fmt" "io" "net/http" "os")const( uploa ...

  3. js 拖拽上传文件夹

    需求 获取拖拽到指定元素上的文件夹中的文件,并需要知道相对地址. 项目地址 https://github.com/156ban/droped-file-and-folder-reader (服务器中运 ...

  4. vue+flask实现视频合成(拖拽上传)

    vue+flask实现视频合成 效果如下 欢迎访问博客代码哈士奇 技术 聊天 交流群 974178910 前端交流群 535620886 vue+flask实现视频合成 拖拽上传我们之前一个文章有写过 ...

  5. Dropzone.js实现文件拖拽上传

    dropzone.js是一个开源的JavaScript库,提供 AJAX 异步文件上传功能,支持拖拽文件.支持最大文件大小.支持设置文件类型.支持预览上传结果,不依赖jQuery库. 使用Dropzo ...

  6. js使用input上传文件夹、拖拽上传文件夹并将文件夹结构展示为树形结构

    一.实现效果 左侧区域支持选择一个系统中的文件夹,或者将文件夹拖拽到这个区域进行上传,右侧区域可以将文件夹的结构展示为树形结构. 二.代码实现 由于需要使用树形插件zTree,这个插件是依赖于jque ...

  7. 原生js实现拖拽上传文件

    原生js实现拖拽上传文件 <!DOCTYPE html> <html lang="en"><head><meta charset=&quo ...

  8. js实现文件拖拽上传并显示待上传的文件列表

    此文章中完整的代码在我的github中:https://github.com/LiuFeng1011/WebTest/tree/master/upload 首先实现html页面的内容: <bod ...

  9. js 监听 复制图片 拖拽上传文件 并填充到markdown编辑器

    文章目录 效果 获取粘贴的文件 获取拖拽的文件 发送请求 生成markdown 语句 实现逻辑代码(主要实现) 后端代码 效果 获取粘贴的文件 const { clipboardData } = e; ...

  10. html5 上传超大文件,HTML5教程 如何拖拽上传大文件

    本篇教程探讨了HTML5教程 如何拖拽上传大文件,希望阅读本篇文章以后大家有所收获,帮助大家HTML5+CSS3从入门到精通 . < 前言: 大文件传输一直是技术上的一大难点.文件过大时,一些性 ...

最新文章

  1. python对于会计-会计转到数据分析值得吗?
  2. Python操纵Mysql数据库的三种方法,实现增删改查
  3. winform改变启动界面
  4. 新零售基础设施 看阿里巴巴如何打“地基”
  5. 用Docker搭建Elasticsearch集群
  6. HDU 4753 Fishhead’s Little Game(DFS)
  7. python set并集update_Python中集合set()的使用及处理
  8. es中主分片和副本分片
  9. python中的shallow copy 和 deep copy
  10. 【数据库】数据库课程设计一一疫苗接种数据库
  11. Android 六大布局
  12. 光栅渲染器(六)着色准备和深度缓存实现
  13. STC15内部ADC测电压
  14. 如何在海外高效的推广APP?海外推广产品该注意哪些点?
  15. kernel核函数是什么、用来干什么 及其详细推导
  16. 【搜集+亲测】无法注册Flash Player的Activex控件最终解决方法(亲测,WIN7 64位系统)
  17. 我是一个功利主义ACMer
  18. 天正暖通天圆地方在哪_体现了“天圆地方”的中国古典家具有哪些?我们来聊一下!...
  19. 学习表——受任于败军之际,奉命于危难之间(12.12-12.18)
  20. 如何写好科研论文(学习笔记2000字)

热门文章

  1. C++中begin()函数的含参数的使用
  2. Android应用停用
  3. mysql无级分销_无限级分销系统数据库表设计
  4. 在邮箱中用html写邮件
  5. rpc服务器不可用自动重启,出现RPC服务器不可用的解决方法
  6. html 自定义打印模板,如何自定义打印模板
  7. HTML 前后端分离,再谈前后端分离开发和部署
  8. python车牌识别系统开源代码_python利用百度云接口实现车牌识别的示例
  9. python 控制 窗口 控件_【python】Tkinter可视化窗口(一)
  10. Finalize()、Dispose(bool disposing)和Dispose()的使用场景与对比