angular - 上传后如何清除表单数据
问题描述
我有一个很好的上传方法,但我正在尝试修改它,以便在上传完成后删除表单数据。具体来说,我试图在上传后删除文件的名称(wrong.png),但我想确保如果我再次单击上传,则不会留下最后一个文件的痕迹。
我尝试使用 formData.reset(),并将 file=null 设置为 angular,但都没有工作。
HTML
<h1>Upload new file (.png or .jpg)</h1>
<input #file type="file" multiple (change)="upload(file.files)" />
角度
upload(files) {
if (files.length === 0)
return;
const formData = new FormData();
for (let file of files) {
formData.append(file.name, file);
}
const uploadReq = new HttpRequest('POST', `/api/FileUpload`, formData, {
reportProgress: true,
});
解决方案
如果您希望所选文件在 POST 请求完成后消失,请将文件类型输入的值设置为null
. 您可以通过管道传输您的 observable 并使用它tap()
来实现这一点。
@ViewChild('file') file;
upload(files) {
if (files.length === 0)
return;
const formData = new FormData();
for (let file of files) {
formData.append(file.name, file);
}
const uploadReq = new HttpRequest('POST', `/api/FileUpload`, formData, {
reportProgress: true,
}).pipe(tap(_ => {
this.file.nativeElement.value = null
});
}
推荐阅读
- angular - 错误类型错误:无法读取未定义的属性“tokenGetter”
- wordpress - 通过 WP All Import 导入后更新 acf 图像的作者/用户
- angularjs - 在 Response Post 对象中传递从请求查询返回的数据
- c# - tree data structure with data contained in leaf nodes and all other nodes having just a node name
- linux - Linux 系统日志中看到的“ptymonitor”是什么?
- javascript - 在 While 循环内嵌套 For 循环
- reactjs - 为什么我的 URL 改变了,但我的组件没有改变
- javascript - 升级到 NextJS 9.0 后如何修复 React Hooks?
- django - 如何在 django 的用户模块的个人资料页面中编辑特定用户的详细信息
- javascript - 在嵌套对象函数中键入 this