Angular2里获取(input file)上传文件的内容的方法


Posted in Javascript onSeptember 05, 2017

最近在用Angular2,需要有一个上传文件的功能,但是又不想用库,所以直接用原生的input file 标签。

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

然后想获取上传的内容,于是先想了个愚蠢的方法,先通过id获取到这个input标签,然后再获取其中上传的内容

const uploadsFile = document.getElementById(name).files[0];

结果就报错了。然后看提示说HTMLElement没有files方法。于是在es6里找了下有files属性的类型,是HTMLInputElement类型。于是就强制它转换成这个类型。

const uploadsFile=<HTMLInputElement>document.getElementById(name).files[0];

结果还是不行,最后改成了先转换类型再调用属性就可以了。

const uploadsFile = <HTMLInputElement>document.getElementById(name);
  const file = uploadsFile.files[0];

后面发现这种方式好像有点愚蠢,于是换了一个方法,用angular2里的$event来获取输入内容,里面也包括选择上传的文件。

<input type="file" id="newUpload" (change)="getUpload(newUpload, $event)" >

选择的文件在event.target.files里

private getUpload(obj, e) {
  if (e.target.files[0]) {
   const file = e.target.files[0];
   obj.file = file;
  }
 }

接着就可以把它放到formdata里了

const formData = new FormData();
  formData.append('file', this.upload.file);

最后清空选择上传的内容可以用

let upload = <HTMLInputElement>document.querySelector(selectorName);
  upload.value = null;

不知道有没有更好的方法,欢迎讨论和指正。

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

Javascript 相关文章推荐
使用JSLint提高JS代码质量方法分享
Dec 16 Javascript
JavaScript中的ParseInt(&quot;08&quot;)和“09”返回0的原因分析及解决办法
May 19 Javascript
js Canvas绘制圆形时钟效果
Feb 17 Javascript
Angular在一个页面中使用两个ng-app的方法(二)
Feb 20 Javascript
vue 添加vux的代码讲解
Nov 30 Javascript
Vue shopCart 组件开发详解
Jan 26 Javascript
微信小程序实现全国机场索引列表
Jan 31 Javascript
小程序如何获取多个formId实现详解
Sep 20 Javascript
vue自定义指令实现仅支持输入数字和浮点型的示例
Oct 30 Javascript
用JS实现选项卡
Mar 23 Javascript
JS实现炫酷雪花飘落效果
Aug 19 Javascript
JS实现页面侧边栏效果探究
Jan 08 Javascript
浅谈angular4生命周期钩子
Sep 05 #Javascript
webpack踩坑之路图片的路径与打包
Sep 05 #Javascript
js实现鼠标跟随运动效果
Aug 02 #Javascript
Node.js如何使用Diffie-Hellman密钥交换算法详解
Sep 05 #Javascript
javascript观察者模式实现自动刷新效果
Sep 05 #Javascript
js使用generator函数同步执行ajax任务
Sep 05 #Javascript
vue如何使用 Slot 分发内容实例详解
Sep 05 #Javascript
You might like
php 正确解码javascript中通过escape编码后的字符
2010/01/28 PHP
学习php设计模式 php实现享元模式(flyweight)
2015/12/07 PHP
PHP设计模式之观察者模式实例
2016/02/22 PHP
php解析xml 的四种简单方法(附实例)
2016/07/11 PHP
JS获取文本框,下拉框,单选框的值的简单实例
2014/02/26 Javascript
js实现iframe跨页面调用函数的方法
2014/12/13 Javascript
javascript操作数组详解
2014/12/17 Javascript
Javascript复制实例详解
2016/01/28 Javascript
动态的9*9乘法表效果的实现代码
2016/05/16 Javascript
jQuery实现的省市县三级联动菜单效果完整实例
2016/08/01 Javascript
javascript 闭包详解及简单实例应用
2016/12/31 Javascript
完美实现js焦点轮播效果(一)
2017/03/07 Javascript
JS闭包可被利用的常见场景小结
2017/04/09 Javascript
Vue.js使用$.ajax和vue-resource实现OAuth的注册、登录、注销和API调用
2017/05/10 Javascript
inner join 内联与left join 左联的实例代码
2017/09/18 Javascript
详解如何使用webpack在vue项目中写jsx语法
2017/11/08 Javascript
JS实现非首屏图片延迟加载的示例
2018/01/06 Javascript
nodejs实现的连接MySQL数据库功能示例
2018/01/25 NodeJs
使用electron制作满屏心特效的示例代码
2018/11/27 Javascript
vue 详情跳转至列表页实现列表页缓存
2019/03/27 Javascript
Nodejs 识别图片类型的方法
2019/08/15 NodeJs
linux服务器快速卸载安装node环境(简单上手)
2021/02/22 Javascript
pymongo实现控制mongodb中数字字段做加法的方法
2015/03/26 Python
Python实现从URL地址提取文件名的方法
2015/05/15 Python
用Python实现斐波那契(Fibonacci)函数
2016/03/25 Python
Flask的图形化管理界面搭建框架Flask-Admin的使用教程
2016/06/13 Python
Python提取频域特征知识点浅析
2019/03/04 Python
mac使用python识别图形验证码功能
2020/01/10 Python
python 利用toapi库自动生成api
2020/10/19 Python
Tirendo比利时:在线购买轮胎
2018/10/22 全球购物
乌克兰排名第一的在线旅游超市:Farvater.Travel
2020/01/02 全球购物
学校大课间活动方案
2014/01/30 职场文书
网络编辑岗位职责
2014/03/18 职场文书
公司庆典欢迎词
2015/01/26 职场文书
2015年人事专员工作总结
2015/04/29 职场文书
pytorch 权重weight 与 梯度grad 可视化操作
2021/06/05 Python