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 相关文章推荐
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(下:动画篇)
Mar 24 Javascript
jQuery给多个不同元素添加class样式的方法
Mar 26 Javascript
理解JavaScript的变量的入门教程
Jul 07 Javascript
详解webpack进阶之插件篇
Jul 06 Javascript
在vue组件中使用axios的方法
Mar 16 Javascript
详解webpack-dev-server的简单使用
Apr 02 Javascript
vue中的计算属性实例详解
Sep 19 Javascript
vue中进入详情页记住滚动位置的方法(keep-alive)
Sep 21 Javascript
详解处理Vue单页面应用SEO的另一种思路
Nov 09 Javascript
解决layui表格内文本超出隐藏的问题
Sep 12 Javascript
vue监听用户输入和点击功能
Sep 27 Javascript
在vue中使用console.log无效的解决
Aug 09 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之第五天
2006/10/09 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(六)
2014/06/23 PHP
php版微信自动获取收货地址api用法示例
2016/09/22 PHP
PHP 二级子目录(后台目录)设置二级域名
2017/03/02 PHP
免费空间广告万能消除代码
2006/09/04 Javascript
JavaScript写的一个DIV 弹出网页对话框
2009/08/14 Javascript
javascript 日期常用的方法
2009/11/11 Javascript
jquery中选择块并改变属性值的方法
2013/07/31 Javascript
了解了这些才能开始发挥jQuery的威力
2013/10/10 Javascript
jQuery中cookie插件用法实例分析
2015/12/04 Javascript
jQuery fancybox在ie浏览器下无法显示关闭按钮的解决办法
2016/02/19 Javascript
Bootstrap所支持的表单控件实例详解
2016/05/16 Javascript
select2 ajax 设置默认值,初始值的方法
2018/08/09 Javascript
Vue-Router基础学习笔记(小结)
2018/10/15 Javascript
原生JavaScript实现日历功能代码实例(无引用Jq)
2019/09/23 Javascript
[02:08:58]2014 DOTA2国际邀请赛中国区预选赛 Ne VS CIS
2014/05/22 DOTA
[59:08]DOTA2上海特级锦标赛C组小组赛#2 LGD VS Newbee第一局
2016/02/27 DOTA
[36:45]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
python3 pillow生成简单验证码图片的示例
2017/09/19 Python
Python3 处理JSON的实例详解
2017/10/29 Python
Python面向对象程序设计示例小结
2019/01/30 Python
Python pip替换为阿里源的方法步骤
2019/07/02 Python
python将excel转换为csv的代码方法总结
2019/07/03 Python
Python API len函数操作过程解析
2020/03/05 Python
Python3将ipa包中的文件按大小排序
2020/04/17 Python
Jupyter notebook快速入门教程(推荐)
2020/05/18 Python
Tensorflow中k.gradients()和tf.stop_gradient()用法说明
2020/06/10 Python
scrapy在python爬虫中搭建出错的解决方法
2020/11/22 Python
如何用border-image实现文字气泡边框的示例代码
2020/01/21 HTML / CSS
Pretty Little Thing美国:时尚女性服饰
2018/08/27 全球购物
《十六年前的回忆》教学反思
2014/02/14 职场文书
给老婆的保证书范文
2014/04/28 职场文书
网站创业计划书
2014/04/30 职场文书
新员工试用期自我评价
2015/03/10 职场文书
2016年学校爱国卫生月活动总结
2016/04/06 职场文书
前端JS获取URL参数的4种方法总结
2022/04/05 Javascript