我允许用户上传多个文件。然后我需要迭代这些文件并执行一些操作。我想为FileList
添加一些额外的功能,但TS不知道forEach
数组上的FileList
。这是我的代码:
public uploadMultiple(evt){
console.log(evt.files);
FileList.prototype.forEach = function(callback) {[].forEach.call(this, callback)};
}
答案 0 :(得分:2)
您需要先在FileList
界面上声明额外的功能,然后才能进行分配。您可以使用声明合并来执行此操作。如果您使用的是模块系统,则需要在global
:
declare global {
interface FileList {
forEach(callback: (f: File) => void) : void;
}
}
FileList.prototype.forEach = function(callback) { ... };
答案 1 :(得分:0)
imagList: Array<any> = [];
uploadMultiple(event) {
let reader = new FileReader();
this.imagList.pop();
if (event.target.files && event.target.files.length > 0) {
for (var i = 0; i < event.target.files.length; i++) {
this.imagList[i] = event.target.files[i];
}
var formData = new FormData();
for (var i = 0; i < this.imagList.length; i++) {
formData.append("File", <string>this.imagList[i]);
}
}
}
你可以试试这对我有用。
答案 2 :(得分:0)
您永远不应更改类型的原型!
FileList包含length
和item
。
因此,请考虑使用for-loop,而不是使用forEach。
for (var index = 0; index < files.length; ++index) {
var file = files.item(index);
}
有关更多信息,请访问: