web资源读取上传 >>> 拖拽黏贴(文件、文件夹)等通通拿捏

最近项目多处需要资源读取上传,目前市面大多数工具是读取、上传混合一起,导致 UI 以及部分逻辑处理起来不太方便;所以自己实现了一下,具体做法是把资源读取、上传封装成两个工具,读取后的展示以及用户交互交给具体业务实现人,最后通过上传工具上传

介绍

  • 资源读取
    • 内置常见的情况,尽量不耦合 HTML 标签,提供易于处理的数据格式,主要追求灵活
    • d-resouce 把资源读取封装成 npm 包,并整理支持了相关业务场景
  • 资源上传
    • 负责控制并发、进度、取消、重试分片、对接后端接口协议等
    • npm 包正在进行中.....
  • 🙃 啰嗦一下
    • 希望能对大家有帮助,高效完成任务,愉快摸鱼(本人能力有限,望大佬轻喷;欢迎提建议,提交 pr 完善代码更好哈哈哈)

读取需求

  • 触发方式
    • 弹出系统资源框(input type="file" 选择)
    • 复制粘贴
    • 拖拽
  • 读取目标
    • 具体文件
    • 文件夹
    • 文件、文件夹混合
  • 数据形式
    • 平铺
      • 预览、展示部分信息
    • 树形
      • 文件夹展示其下所有文件总大小

d-resouce 简介

  • 传入目标元素,内部会使元素支持拖拽、黏贴方式,支持文件、文件夹、以及混合读取
  • 资源读取前、中、后会触发相应函数,方便业务灵活处理
    • 读取前beforeReadFuc
    • 读取中
      • 过滤,不会中断资源读取beforeReadFuc
        • 回调顺序,如下图
      • 检测,会中断资源读取validFuc
        • 回调顺序,只有文件会触发,如下图
    • 读取后readDataFuc
      • 数据会根据传入 mode 进行数据组建
        • 数组
        • 树形
  • UI 效果处理
    • 拖拽文件移入、离开目标元素会触发相应回调函数dragoverFuc、dragleaveFuc
  • 其他辅助函数
    • 文件 size 属性转为可读性良好的单位展示filterSize
    • 调用系统资源框供用户选择selectResource
    • selectResource 结果按照 mode 类型组装
      • 文件、多个文件selectFileChange
      • 文件夹selectFolderChange

demo 展示

源码地址

最后

如果对你开发某些功能有所帮助,麻烦多点赞评论收藏😊

如果对你实现某类业务有所启发,麻烦多点赞评论收藏😊

如果...,麻烦多点赞评论收藏😊

如果大家有其他的方案,欢迎留言交流哦!

相关推荐
90后的晨仔11 小时前
uni-app项目 Vue3 状态管理 Pinia 完全指南:从概念到实战的深度解析
前端
90后的晨仔11 小时前
uni-app 在 iOS 平台跳转页面时移除底部安全区域的完整技术指南
前端
用户9385156350711 小时前
React + JWT 登录鉴权底层原理与工程化实践
前端·react.js
zww894911111 小时前
家政派单系统开发实战:架构设计与派单算法指南
前端·系统架构
冬奇Lab11 小时前
开源项目第191期:gstack — YC CEO Garry Tan 开源的 AI 虚拟工程团队,23 个专家角色 slash command,从产品构思到上线发布的完整研发流程
人工智能·开源·资讯
fangzhanpeng16812 小时前
(前端)2.js变量作用域样例
开发语言·前端·javascript
赵广陆12 小时前
企业实战:web服务集成
前端·pycharm·fastapi
demo007x12 小时前
Hermes-Agent 技术架构
前端·后端·agent
码艺-Alimjan14 小时前
Vue项目源码备份最佳实践:无视node_modules,打包体积仅2MB
前端·javascript·vue.js