原因是两次input的value值相等了
解决办法就是在获取了文件对象后,将事件的target.value赋值为空,即 event.target.value = ""
html
<button type="button" (click)="uploadFile()">上传</button>
<input type="file" name="file" id="file"
(change)="onFileSelect($event)" accept=".xlsx,.xls"/>
ts文件,
onFileSelect(event) {
if (event.target.files.length == 1) {
this.fileName = event.target.files.item(0).name
this.file = event.target.files.item(0)
event.target.value = "" //解决重复选择同一个文件无法触发的change事件
} else {
console.log("No file select!")
}
}
uploadFile() {
this.service.uploadFile(this.file).then(res => {
this.notice = { type: 'success', title: `${this.fileName}上传成功` };
}).catch(err => {
console.log(err.message)
})
}