作为我们应用程序的一部分,我们希望在服务器上实际可用之前预览用户正在上传的文件。要做到这一点,我尝试了几件事:
URL.createObjectURL()
生成blob,提供WARNING: sanitizing unsafe style value blob:http://localhost:4200/16db9654-3119-4d55-9b59-715c2d31b334 (see http://g.co/ng/security#xss).
url()
:WARNING: sanitizing unsafe style value url(blob:http://localhost:4200/86da46b1-5431-46d0-8757-13c75e09abc2) (see http://g.co/ng/security#xss).
ERROR Error: Required a safe Style, got a URL
直接清理blob网址
url()
WARNING: sanitizing unsafe style value url(SafeValue must use [property]=binding: blob:http://localhost:4200/72561f3d-0ff7-435b-8ac9-ec3a7c0cfbb0 (see http://g.co/ng/security#xss)) (see http://g.co/ng/security#xss).
url()
ERROR Error: Required a safe Style, got a URL
在这些中,实际上没有出现背景图像。我使用chrome inspecter检查了dom,并且在所有情况下都没有实际设置属性。
那么这样做的正确方法是什么?我在开始时有一个File实例。
答案 0 :(得分:3)
HTML:
<input type='file' (change)="onAdd($event)">
<div class="col-4 col-sm-4 col-md-4 col-lg-4 col-xl-4" *ngIf="url">
<img [src]="url">
</div>
输入脚本:
onAdd(event: any) {
console.log(event);
if (event.target.files && event.target.files[0]) {
var reader = new FileReader();
reader.onload = (event: any) => {
this.slika = event.target.result;
}
reader.readAsDataURL(event.target.files[0]);
}
}
编辑:
将您的代码更改为:
public addFile(event: any) {
if (event.target.files && event.target.files[0]) {
var reader = new FileReader();
reader.onload = (event: any) => {
this.url = event.target.result;
}
reader.readAsDataURL(event.target.files[0]);
}
}
和此:
<input type="file" (change)="addFile($event)">
通过这些更改,它现在应该可以正常工作。