vue上传图片组件编写

vue上传图片组件编写点击打开源码编写一个vue上传图片组件:1.首先得有一个[type=file]文件标签并且隐藏,changge事件来获取图片:2.触发隐藏的文件标签:(通过原生的click来触发)document.getElementById(‘upload_file’).click()3.获取file文件里面的值方法:fileChange($event)fileCha

大家好,又见面了,我是你们的朋友全栈君。

点击打开源码 https://github.com/317482454/vue_upload

在线查看地址:http://jqvue.com/demo/vue_upload/demo.html

编写一个vue上传图片组件:

1.首先得有一个[type=file]文件标签并且隐藏,changge事件来获取图片:

    <input @change="fileChange($event)" type="file" id="upload_file" multiple style="display: none"/>

2.触发隐藏的文件标签:(通过原生的click来触发)

  document.getElementById('upload_file').click()

3.获取file文件里面的值方法:fileChange($event)

  fileChange(el){
      if (!el.target.files[0].size) return;//判断是否有文件数量
      this.fileList(el.target.files);//获取files文件组传入处理
      el.target.value = ''//清空val值,以便可以重复添加一张图片
    }

4.处理files文件组

获取传入单个图片文件

 fileList(files){
      for (let i = 0; i < files.length; i++) {
        this.fileAdd(files[i]);
      }
    }

处理获取到的图片文件,统计文件大小,转图片为base64以供显示

 fileAdd(file){
      this.size = this.size + file.size;//总大小
      let reader = new FileReader();
      reader.vue = this;
      reader.readAsDataURL(file);
      reader.onload = function () {
        file.src = this.result;
        this.vue.imgList.push({
          file
        });
      }
    },

5.文件大小换算

   bytesToSize(bytes){
      if (bytes === 0) return '0 B';
      let k = 1000, // or 1024
        sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
        i = Math.floor(Math.log(bytes) / Math.log(k));
      return (bytes / Math.pow(k, i)).toPrecision(3) + ' ' + sizes[i];
    },


6.拖拽上传

<div class="upload_warp_right" @drop="drop($event)" @dragenter="dragenter($event)" @dragover="dragover($event)">
     或者将文件拖到此处
</div>
  dragenter(el){
      el.stopPropagation();
      el.preventDefault();
    },
    dragover(el){
      el.stopPropagation();
      el.preventDefault();
    },
    drop(el){
      el.stopPropagation();
      el.preventDefault();
      this.fileList(el.dataTransfer.files);
    }

最终效果如下:


vue上传图片组件编写


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/149505.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月24日 下午7:36
下一篇 2022年6月24日 下午7:36


相关推荐

  • tomcat严重: Error filterStart

    tomcat严重: Error filterStart如果是连接到cvs是jar包的路径问题。。。。删除从CVS导入的jar包,再导入本机上的jar包….

    2022年7月27日
    13
  • python怎么安装matplotlib.pyplot_python安装matplotlib模块

    python怎么安装matplotlib.pyplot_python安装matplotlib模块总结经验,前排感谢CSDN大神…一、在Pycharm中安装matplotlib1、打开AnacondaPrompt,输入pipinstallmatplotlib输入pipinstallmatplotlib==3.3.0限制下载的版本为3.3.0.这是为了防止版本过新,之后在PyCharm运行时出现问题。2、打开PyCharm(1)依次点击File-Settings-…

    2022年8月25日
    13
  • LoadRunner 详细使用教程

    LoadRunner 详细使用教程打开VirtualUserGenerator(虚拟用户生成器)打开后会有一个小弹窗,点击closeNewScriptandSolution(新建脚本和解决方案)创建脚本选择SingleProtocol下面的Web-HTTP/HTML,在写脚本名称、选择存放位置、解决方案、打钩最后点击Create(创建)就可以了创建成功后点解决方案下Test下面的Action,点击菜单栏的Record里的Record或者点红圈中的红点录制脚本(..

    2022年5月24日
    41
  • ip代理原理解析

    ip代理原理解析最近一众国内大行信息交流平台纷纷出台了显示用户 ip 属地的功能 但是不少人好奇 ip 属地是什么意思 怎么看到有人显示一会在上海 一会在海外呢 怎么还有人可以设置为未知呢 音方面表示 目前需要更新版本才能显示 并且相关展示目前暂不支持手动开启或关闭 个人主页属地的展示是根据用户最近一次发文或发评时对应的属地来判定所属地区 若从未在平台上发文或发评 则不会在个人主页上展示 属地在境内展示到省 区 市 境外展示到国家 地区 不会展示用户精确地理位置 对于一些用户反映的 ip 未知 通常是因为网络原因导致的信息获

    2026年3月26日
    1
  • 常用BAPI清单

    常用BAPI清单SAP项目中开发用到的BAPI:MM模块1、BAPI_MATERIAL_SAVEDATA创建物料主数据注意参数EXTENSIONIN的使用,可以创建自定义字段例如WA_BAPI_TE_MARA-MATERIAL=ITAB_UP-MATNR.T_EXTENSIONIN-STRUCTURE=’BAPI_TE_MARA’.T_EXTENSIONIN-…

    2022年7月24日
    15
  • WinForm界面优化工具

    WinForm界面优化工具引用等待尝试http://space.itpub.net/12639172/viewspace-678321

    2022年5月27日
    43

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号