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 展示

源码地址

最后

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

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

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

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

相关推荐
哈__2 分钟前
ReactNative项目OpenHarmony三方库集成实战:react-native-fingerprint-scanner
javascript·react native·react.js
晴栀ay6 分钟前
Generator + RxJS 重构 LLM 流式输出的“丝滑”架构
javascript·后端·llm
Jackson__13 分钟前
AI时代,前端开发者到底还剩下什么?又该往哪里走?
前端·ai编程
C澒34 分钟前
微前端容器标准化:容器标准化演进
前端·架构
卖报的大地主36 分钟前
Learn Claude Code Agent 开发 | 2、插拔式工具系统:扩展功能不修改核心循环
前端·chrome
我是伪码农44 分钟前
14届蓝桥杯
javascript·css·css3
qzhqbb1 小时前
Web 服务器(Nginx、Apache)
服务器·前端·nginx
天若有情6731 小时前
前端进阶必看:吃透这些高阶知识,告别CRUD,迈向高级前端工程师
前端·状态模式
装不满的克莱因瓶1 小时前
React Native vs Flutter:一次深入到底的性能对比分析(含原理 + 实战)
javascript·flutter·react native·react.js·app·移动端
coderYYY1 小时前
git push报错Authentication failed for ‘xxx’也不会弹要求输入用户名密码的最终解决方法
前端·git·gitee·github