angular - 如何设置文件上传预览?
问题描述
我尝试为多个部分设置文件上传预览的代码,但是一旦我为一个部分选择文件,我就会为所有其他部分获得相同的图像预览......这里的帮助 https://stackblitz.com/edit/angular-ryk3jg?file =src%2Fapp%2Fapp.component.html(我的代码)
selectFile(event) {
if (event.target.files && event.target.files[0]) {
var reader = new FileReader();
reader.readAsDataURL(event.target.files[0]); // read file as data url
reader.onload = (event) => { // called once readAsDataURL is completed
this.url = event.target.result;
}
this.selectedfiles = event.target.files;
}
}
我的html代码
<div class="form-inline" style="color: black">
<div class="row">
<div class="col-md-6 offset-md-3">
<label style ="color: black">Upload ID Front</label>
<form >
<div class="form-group" >
<img [src]="url" height="200"> <br/>
<input type="file" (change)="selectFile($event)" />
</div>
</form>
</div>
</div>
<button (click)="uploadIDfront()" class="btn btn-primary" type="submit" style="margin:0 35%;position:relative;left:-35px;background-color: #3560a5; /* blue */">Upload</button>
</div>
<br/>
<div class="form-inline" Style="color: black">
<div class="row">
<div class="col-md-6 offset-md-3">
<label style ="color: black">UPload ID Back</label>
<form >
<div class="form-group" >
<img [src]="url" height="200"> <br/>
<input type="file" (change)="selectFile($event)" />
</div>
</form>
</div>
</div>
<button (click)="uploadIDback()" class="btn btn-primary" style="margin:0 35%;position:relative;left:-35px;background-color: #3560a5; /* blue */">Upload</button>
</div>
<br/>
两者都得到相同的图像..
解决方案
我有一个预览图像的演示,你可以使用它
HTML
<input #Image type="file" (change)="handleFileInput($event.target.files)"/>
<img *ngIf="imageUrl" [src]="imageUrl" class="image">
TS
export class AppComponent {
name = 'Angular';
fileToUpload: any;
imageUrl: any;
handleFileInput(file: FileList) {
this.fileToUpload = file.item(0);
//Show image preview
let reader = new FileReader();
reader.onload = (event: any) => {
this.imageUrl = event.target.result;
}
reader.readAsDataURL(this.fileToUpload);
}
}
https://stackblitz.com/edit/angular-preview-image-upload?file=src/app/app.component.html
更新
您仅在事件中使用更改名称事件更新您的代码onload
。
您使用具有不同范围的相同事件变量。
<img #image height="200"> <br/>
reader.onload = (event1: any, image) => { // called once readAsDataURL is completed
//this.url = event1.target.result;
//image.src = event1.target.result;
event.target.parentElement.children[0].src = event1.target.result;
}
您的代码已更新
推荐阅读
- .htaccess - 配置 htaccess 以忽略最后一个斜杠后的任何内容
- ember.js - 无法transitionTo,错误“传递的上下文对象多于动态段”不正确
- php - 提供没有错误的空白页
- python - C++ 代码和 Python 代码之间的通信
- server - 在网站构建器中处理自定义域?
- php - 使用php阻止url指定的文件夹或路径
- ffmpeg - 使用 pkg-config 未找到编译 FFMPEG x265
- spring - 引起:java.lang.ClassNotFoundException: org.springframework.messaging.converter.MessageConverter 在微服务
- swift - 为什么没有迅速收到委托事件?
- mysql - 十月 CMS - 第 1 行的“内容”列的数据太长