前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Angular2里获取(input file)上传文件的内容

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

作者头像
Tuzei
发布2020-03-16 17:03:43
2.5K0
发布2020-03-16 17:03:43
举报
文章被收录于专栏:Tuzei的笔记Tuzei的笔记

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

代码语言:javascript
复制
<input type="file" id="newUpload" >

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

代码语言:javascript
复制
 const uploadsFile = document.getElementById(name).files[0];

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

代码语言:javascript
复制
 const uploadsFile=<HTMLInputElement>document.getElementById(name).files[0];

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

代码语言:javascript
复制
   const uploadsFile = <HTMLInputElement>document.getElementById(name);
   const file = uploadsFile.files[0];

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

代码语言:javascript
复制
 <input type="file" id="newUpload" (change)="getUpload(newUpload, $event)" >

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

代码语言:javascript
复制
private getUpload(obj, e) {
    if (e.target.files[0]) {
      const file = e.target.files[0];
      obj.file = file;
    }
  }

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

代码语言:javascript
复制
  const formData = new FormData();
    formData.append('file', this.upload.file);

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

代码语言:javascript
复制
  let upload = <HTMLInputElement>document.querySelector(selectorName);
    upload.value = null;

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档