我想在用户选择文件时触发一个事件。如果用户每次更改文件,则使用.change
事件即可运行。
但是,如果用户再次选择相同的文件,我想要触发该事件。
- 用户选择文件
A.jpg
(事件触发) - 用户选择文件
B.jpg
(事件触发) - 用户选择文件
B.jpg
(事件不会触发,我希望它触发)
我该怎么做?
我想在用户选择文件时触发一个事件。如果用户每次更改文件,则使用.change
事件即可运行。
但是,如果用户再次选择相同的文件,我想要触发该事件。
A.jpg
(事件触发)B.jpg
(事件触发)B.jpg
(事件不会触发,我希望它触发)我该怎么做?
form.reset()
来清除文件输入的 files
列表。这将重置所有字段为默认值,但在许多情况下,您可能只是在表单中使用 input type='file' 来上传文件而已。在这种解决方案中,无需克隆元素并重新挂钩事件。感谢 philiplehmann。<input
#uploadInput
type="file"
multiple
(change)="yourMethod(uploadInput.files)"
(click)="resetUploadedDocuments($event)"
/>
resetUploadedDocuments(event: MouseEvent) {
(event.target as HTMLInputElement).value = null;
}
因此,除非您将每个文件存储并进行编程比较,否则无法百分之百确定它们是否选择了相同的文件。
与文件交互的方式(用户“上传”文件时JS执行的操作)是HTML5 File API和JS FileReader。
https://www.html5rocks.com/en/tutorials/file/dndfiles/
https://scotch.io/tutorials/use-the-html5-file-api-to-work-with-files-locally-in-the-browser
这些教程向您展示如何在上传文件时捕获和读取元数据(存储为js对象)。