原生JS实现前端本地文件上传


Posted in Javascript onSeptember 08, 2018

本文实例为大家分享了JS实现前端本地文件上传的具体代码,供大家参考,具体内容如下

通过input type = file来选择本地文件

<div>
  <form>
    <input type="file" id="file-input" name="fileContent">
  </form>
</div>
var fileInput = document.querySelector('#file-input');
fileInput.onchange = function(){
  console.log('文件名:',this.value)
  var formData = new FormData(this.form);
  console.log(formData)
}
//打印出的结果是文件名: C:\fakepath\css.jpg然后在是一个空对象

使用formData无法得到文件的内容,那么就使用FileReader来读取整个文件的内容

var fileInput = document.querySelector('#file-input');
fileInput.onchange = function(){
 var filereader = new FileReader();
 var fileType = this.files[0].type;
 filereader.onload = function(){
   if(/^image\[jpeg|png|gif]/.test(fileType)){
     console.log(this.result);
   }
 }
 console.log(this.files[0]);
 filereader.readAsDataURL(this.files[0]);
}
console.dir(fileInput);

从打印结果来看,能清楚的知道上传的文件信息是在input type = ‘file'dom对象中的files[0]中。
filereader.readAsDataURL是将flies[0]里的信息转换成base64方式读取。
filereader的读取为以下格式:

  • readAsDataURL(this.files[0]) base64位读取
  • readAsBinaryString(this.files[0]) 以二进制方式读取读取结果是UTF-8形式(被废弃)
  • readAsArrayBuffer(this.flies[0]) 以二进制原始方法读取,读取结果可转换成整数的数组
var files = document.getElementById('pic').files; 
//files是文件选择框选择的文件对象数组

if(files.length == 0) return; 

var form = new FormData(), 
  url = 'http://.......', //服务器上传地址
  file = files[0];
form.append('file', file);

var xhr = new XMLHttpRequest();
xhr.open("post", url, true);

//上传进度事件
xhr.upload.addEventListener("progress", function(result) {
  if (result.lengthComputable) {
    //上传进度
    var percent = (result.loaded / result.total * 100).toFixed(2); 
  }
}, false);

xhr.addEventListener("readystatechange", function() {
  var result = xhr;
  if (result.status != 200) { //error
    console.log('上传失败', result.status, result.statusText, result.response);
  } 
  else if (result.readyState == 4) { //finished
    console.log('上传成功', result);
  }
});
xhr.send(form); //开始上传

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
CSDN轮换广告图片轮换效果
Mar 27 Javascript
JavaScript动态调整TextArea高度的代码
Dec 28 Javascript
由JavaScript中call()方法引发的对面向对象继承机制call的思考
Sep 12 Javascript
JavaScript入门之基本函数详解
Oct 21 Javascript
JavaScript 事件对象介绍
Apr 13 Javascript
AngularJS的内置过滤器详解
May 14 Javascript
fullpage.js最后一屏滚动方式
Feb 06 Javascript
JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能示例
Jul 31 Javascript
layerUI下的绑定事件实例代码
Aug 17 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
Feb 28 Javascript
Angular8 简单表单验证的实现示例
Jun 03 Javascript
详解JavaScript执行模型
Nov 16 Javascript
JS实现可视化文件上传
Sep 08 #Javascript
js实现文件上传功能 后台使用MultipartFile
Sep 08 #Javascript
vue-router的HTML5 History 模式设置
Sep 08 #Javascript
vue移动端下拉刷新和上拉加载的实现代码
Sep 08 #Javascript
react 父子组件之间通讯props
Sep 08 #Javascript
js代码规范之Eslint安装与配置详解
Sep 08 #Javascript
vue弹窗插件实战代码
Sep 08 #Javascript
You might like
php5 mysql分页实例代码
2008/04/10 PHP
PHP+JS+rsa数据加密传输实现代码
2011/03/23 PHP
php检测iis环境是否支持htaccess的方法
2014/02/18 PHP
PHP实现将textarea的值根据回车换行拆分至数组
2015/06/10 PHP
使用PHP编写发红包程序
2015/07/22 PHP
实例讲解PHP设计模式编程中的简单工厂模式
2016/02/29 PHP
Laravel 中创建 Zip 压缩文件并提供下载的实现方法
2019/04/02 PHP
php设计模式之抽象工厂模式分析【星际争霸游戏案例】
2020/01/23 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
javascript 按回车键相应按钮提交事件
2009/11/02 Javascript
jQuery对表单的操作代码集合
2011/04/06 Javascript
Javascript的数组与字典用法与遍历对象的属性技巧
2012/11/07 Javascript
javascript单引号和双引号的区别和处理
2014/05/14 Javascript
js实现简单锁屏功能实例
2015/05/27 Javascript
js实现图片放大和拖拽特效代码分享
2015/09/05 Javascript
BootStrap智能表单实战系列(四)表单布局介绍
2016/06/13 Javascript
使用jquery/js获取iframe父子级、同级获取元素的方法
2016/08/05 Javascript
JS制作图形验证码实现代码
2020/10/19 Javascript
Node.js使用gm拼装sprite图片
2017/07/04 Javascript
Angular4学习笔记之新建项目的方法
2017/07/18 Javascript
axios发送post请求springMVC接收不到参数的解决方法
2018/03/05 Javascript
详解webpack 热更新优化
2018/09/13 Javascript
vue中封装axios并实现api接口的统一管理
2020/12/25 Vue.js
[43:35]EG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
分享Python文本生成二维码实例
2016/01/06 Python
Python中property属性实例解析
2018/02/10 Python
Python装饰器原理与简单用法实例分析
2018/04/29 Python
python 自定义异常和异常捕捉的方法
2018/10/18 Python
Flask框架钩子函数功能与用法分析
2019/08/02 Python
python sitk.show()与imageJ结合使用常见的问题
2020/04/20 Python
建筑个人求职信范文
2014/01/25 职场文书
小学教育见习报告
2014/10/31 职场文书
兵马俑的导游词
2015/02/02 职场文书
2015幼儿园新学期寄语
2015/02/27 职场文书
正规欠条模板
2015/07/03 职场文书
Python爬虫:从m3u8文件里提取小视频的正确操作
2021/05/14 Python