Html 在a<;中选择文件后,如何检查文件中的更改;输入类型=";文件">;?

Html 在a<;中选择文件后,如何检查文件中的更改;输入类型=";文件">;?,html,angular,file,Html,Angular,File,要以Angular方式上载I文件,我将执行以下操作: <input type="file" (change)="onFileSelected($event.target.files)"/> <button (click)="onStartUpload()"</button> public onFileSelected(files: File[]) { this.file = files[0]; } public onStartUpload(

要以Angular方式上载I文件,我将执行以下操作:

<input type="file" (change)="onFileSelected($event.target.files)"/> 
<button (click)="onStartUpload()"</button>

  public onFileSelected(files: File[]) {
    this.file = files[0];
  }

  public onStartUpload() {
    // Upload the file
  }


如果使用FileReader对象的实例,则可以利用这样一个事实,即它不会加载在选择后被更改的文件。为了成功上传文件,文件必须与选择文件时保持一致

这里有一个简短的例子来演示。在windows下的Chrome x64当前迭代上测试

window.addEventListener('load',onload,false);
功能已加载(evt){
document.querySelector('button')。addEventListener('click',onBtnClicked,false);
}
函数onBtnClicked(evt){
让fileToUpload=document.querySelector('input').files[0];
const fileReader=new fileReader();
fileReader.onload=fileLoaded;
fileReader.onerror=fileError;
readAsText(fileToUpload);
//readAsArrayBuffer(fileToUpload);
//readAsBinaryString(fileToUpload);
//readAsDataURL(fileToUpload);
函数文件加载(evt){
让fileToUpload=evt.target.result;
}
函数文件错误(evt){
log(“加载文件时出错”);
日志(evt.target.error);
}
}


Go
为了清楚起见,您主要是想确保上传工作正常,还是只是想检查是否已更改?检查是否已更改:)我怀疑这是不可能的。如果您在文件选择器更改时获取文件副本并将其缓存,则在更改文件并按下按钮后,您将返回相同的信息。长度和最后修改的日期都是相同的——最初的细节。你认为这条线对你有用吗?您是否使用文件阅读器获取内容?如果是这样的话,那可能就是你走出这个洞的方法,因为
onerror
方法而不是
onload
方法。以下是在选择OneError方法后更改文件而调用该方法时,FileReader的错误成员所包含的内容:“DomeException:无法读取请求的文件,通常是由于获取文件引用后出现的权限问题。”(Chrome 81.0.4044.113(正式构建)(64位))