相思资源网 Design By www.200059.com

前言

本文主要介绍如何使用原生js,通过面向对象的方式实现一个文件上传预览的组件,该组件利用FileReader来实现文件在前端的解析,预览,读取进度等功能,并对外暴露相应api来实现用户自定义的需求,比如文件上传,进度监听,自定义样式,读取成功回调等。

组件设计架构如下:

教你3分钟利用原生js实现有进度监听的文件上传预览组件

涉及的核心知识点如下:

  1. 闭包:减少变量污染,缩短变量查找范围
  2. 自执行函数
  3. file API:对文件进行读取,解析,监控文件事件
  4. DocumentFragment API:主要用来优化dom操作
  5. minix :用来实现对象混合
  6. 正则表达式:匹配文件类型
  7. class :类组件

github地址

用原生js实现具有进度监听的文件上传预览组件 (本地下载)

Demo演示

教你3分钟利用原生js实现有进度监听的文件上传预览组件

教你3分钟利用原生js实现有进度监听的文件上传预览组件

教你3分钟利用原生js实现有进度监听的文件上传预览组件

教你3分钟利用原生js实现有进度监听的文件上传预览组件

使用:

<div id="test"></div>
<script src="/UploadFiles/2021-04-02/xjFile.js">

css代码:

.xj-wrap {
   position: relative;
   display: inline-block;
   border: 1px dashed #888;
   width: 200px;
   height: 200px;
   border-radius: 6px;
   overflow: hidden;
  }
  .xj-wrap::before {
   content: '+';
   font-size: 36px;
   position: absolute;
   transform: translate(-50%, -50%);
   left: 50%;
   top: 50%;
   color: #ccc;
  }
  .xj-wrap .xj-pre-img {
   width: 100%;
   height: 100%;
   background-repeat: no-repeat;
   background-position: center center;
   background-size: 100%;
  }
  .xj-file {
   position: absolute;
   left: 0;
   right: 0;
   bottom: 0;
   top: 0;
   opacity: 0;
   cursor: pointer;
  }

js代码:

(function(win, doc){
 function xjFile(opt) {
  var defaultOption = {
   el: doc.body,
   accept: '*', // 格式按照'image/jpg,image/gif'传
   clsName: 'xj-wrap',
   beforeUpload: function(e) { console.log(e) },
   onProgress: function(e) { console.log(e) },
   onLoad: function(e) { console.log(e) },
   onError: function(e) { console.error('文件读取错误', e) }
  };

  // 获取dom
  if(opt.el) {
   opt.el = typeof opt.el === 'object' "htmlcode">
class XjFile {
 constructor(opt) {

 }

 init() {

 }

 watch() {

 }

 render() {

 }

 clearFile() {

 }

 minix(source, target) {
  
 }

 isImage(type) {
  
 }
}

总结

该组件仍有需要完善的地方,在后期使用中,会慢慢更新,优化,欢迎大家提出宝贵的建议。

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。

标签:
js,文件上传组件,js实现上传文件夹

相思资源网 Design By www.200059.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
相思资源网 Design By www.200059.com

评论“教你3分钟利用原生js实现有进度监听的文件上传预览组件”

暂无教你3分钟利用原生js实现有进度监听的文件上传预览组件的评论...

P70系列延期,华为新旗舰将在下月发布

3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。

而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?

根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。