您好,登錄后才能下訂單哦!
最近在用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;
不知道有沒有更好的方法,歡迎討論和指正。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。