一、文件上传

1、上传的html

我们可以使用input实现文件上传

<input type="file" id="upload">

2、访问上传的文件

通过dom访问

const input = document.querySelector("#upload");
const files = input.files;

通过onchange事件访问

const input = document.querySelector("#upload");
input.addEventListener('change',function(){// 通过onchange事件获取files,函数要使用function定义,箭头函数this指向父级作用域const files = this.files;
},false);input.addEventListener('change',(e) => {// 这个本质还是通过Dom获取文件const files = e.target.files;
},false);

3、自定义input

通常,我们在实际的开发中不会真的去使用input标签原本的样式,我们需要实现自己想要的按钮,或者其他的样式.这个时候,我们需要对input的样式进行定制.input上传,无非就是点击input的按钮=>弹出弹窗=>选择文件=>获取文件=>完成上传这么一个过程.如果我们自己写一个button,用自定义的button触发input就可以代替input进行上传文件了.所以我们可以隐藏input,用任意dom元素通过click代理input的点击事件.原理就说到这里.

const input = document.querySelector("#upload");
/* 通过调用input.click(),可以唤起文件选择弹窗,
*  所以你可以在button的点击事件里去调用这个方法,达到代理的目的
*/
input.click();

二、文件预览

方法1:通过FileReader实现

const input = document.querySelector("#upload");
input.addEventListener('change',function(){const files = this.files;const fileList = Object.entries(files).map(([_,file]) => {const reader = new FileReader();reader.readAsDataURL(file);reader.onload = (e) => {file.preview = e.target.result;}return file;});/* *  file中的preview存的就是可以预览使用url,如果你需要保证fileList的顺序,*  请不要使用这种方式,你可以采用索引的方式存储,来保证它的顺序一致性*/console.log(fileList);
},false);

方法2:通过window.URL.createObjectURL()实现

const input = document.querySelector("#upload");
input.addEventListener('change',function(){const files = this.files;const fileList = Object.entries(files).map(([_,file]) => {const preview = window.URL.createObjectURL(file);file.preview = preview;// 需要在合适的实际进行销毁,否则只有在页面卸载的时候才会自动卸载.// window.URL.revokeObjectURL(preview);return file;});/* *  file中的preview存的就是可以预览使用url*/console.log(fileList);
},false);

三、拖拽上传

// 此处定义一个drop容器(省略),并取到该元素;
const dropBox = document.querySelector("#drop");
dropBox.addEventListener("dragenter",dragEnter,false);
dropBox.addEventListener("dragover",dragOver,false);
dropBox.addEventListener("drop",drop,false);function dragEnter(e){e.stopPropagation();e.preventDefault();
}function dragOver(e){e.stopPropagation();e.preventDefault();
}function drop(e){// 当文件拖拽到dropBox区域时,可以在该事件取到filesconst files = e.dataTransfer.files;
}

js实现文件上传、文件预览、拖拽上传的方法相关推荐

  1. 9行代码实现图片上传和预览(自定义按钮上传)

    9行代码实现图片上传和预览(自定义按钮上传) 结果展示: 默认展示 2.点击按钮后,选择图片文件 图片预览 首先我们定义一个type为file的input,并将它隐藏,绘制一个button,在按钮点击 ...

  2. pdf上传及预览;file上传pdf文件及预览;vue上传pdf文件及预览;vue-pdf预览pdf文件

    需求:上传pdf文件,并点击可以打开预览.使用input的file功能即可完成,预览只需要跳转到pdf的url地址即可.还可以配合vue-pdf直接预览,点击看这篇. 以下代码可直接复制使用!!!有效 ...

  3. 实现拖拽上传文件的一款小控件——dropzone

    由于专注所以专业.非常多小巧的东西乍一看非常不起眼,却在特定的领域表现不俗,就是由于集中了热情. dropzone就是这样一款小控件,实现拖拽上传.它不依赖于其他像jquery等JS库.并且支持多方面 ...

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

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

  5. [开源应用]利用HTTPHandler+resumableJs+HTML5实现拖拽上传[大]文件

    前言: 大文件传输一直是技术上的一大难点.文件过大时,一些性提交所有的内容进内存是不现实的.大文件带来问题还有是否支持断点传输和多文件同时传输. 本文以resumableJs为例,介绍了如何在ASP. ...

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

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

  7. uploadify java 下载_uploadify java实现多文件上传和预览

    本文实例为大家分享了java文件上传和预览实现代码,供大家参考,具体内容如下 1.下载uploadify插件 2.index.html #uploader { position: relative; ...

  8. php 表格导入excel插件,BootStrap Fileinput插件和表格插件相结合实现导入Excel数据的文件上传、预览、提交的步骤...

    这篇文章主要介绍了BootStrap Fileinput插件和Bootstrap table表格插件相结合实现文件上传.预览.提交的导入Excel数据操作步骤,需要的朋友可以参考下 bootstrap ...

  9. vue3 el-upload 上传附件及预览 限制只能上传一个图片或者pdf格式的文件

    vue3 el-upload 上传附件及预览 限制只能上传一个图片或者pdf格式的文件 效果如图 直接看代码吧 template部分 <div class="file-upload&q ...

  10. minio实现大文件分片上传+断点续传+预览

    minio实现大文件分片上传+断点续传+预览 只提供后端java代码 思路: 前端分片 校验文件md5是否已经存在 --不存在创建临时桶存分片 校验分块是否已经上传 分块上传 合并分块 校验合成后md ...

最新文章

  1. c++ stl之pirority_queue
  2. Nagios安装部署与Cacti整合文档超精细版本
  3. s3c2410开发环境建立
  4. 前缀++ 后缀++ 运算符重载
  5. git 代码推送流程_Git 101:一个让您开始推送代码的Git工作流程
  6. [react] 自定义组件时render是可选的吗?为什么?
  7. 『中级篇』容器网络之host和none(29)
  8. 新年礼物 总算有服务器了
  9. matlab使用mex,c – 如何在Matlab中配置MEX功能
  10. 如何将pytorch检测模型通过docker部署到服务器
  11. 使用GDAL对HDF数据进行geoloc校正
  12. ZXing拍码后区分扫描到的是一维码、二维码、其他码,android音视频面试
  13. 树莓派舵机控制c语言,第8章 树莓派控制伺服电机(舵机)
  14. 超级好用的流程图js框架
  15. Windows 10 修改文件夹图标
  16. struts中的javascript
  17. 【STM32H7】第2章 ThreadX FileX文件系统介绍
  18. 台式计算机逗号怎么打,电脑逗号怎么打(逗号怎么打在上面)
  19. 温度报警课程设计报告
  20. 生物信息分析全景介绍

热门文章

  1. 不得不学的统计学基础知识(一)
  2. 传智播客javascript视频教程(杨中科)学习笔记
  3. 酷派D530刷机指引之官方ROM
  4. 实战撤回对方QQ消息+防止别人撤回消息插件演示附软件
  5. ​我国首个5G消息平台标准发布;华为拿下支付牌照;工业富联、酷派发布2020年业绩报告...
  6. Android mes系统源码,基于Android的MES监控系统设计与开发
  7. CUDA编程技术汇总
  8. 2021-2027全球与中国MSMS探针卡市场现状及未来发展趋势
  9. Android代码里面设置字体颜色的三种方法
  10. 9.4SAS软件入门