Angular4实现图片上传预览路径不安全的问题解决


Posted in Javascript onDecember 25, 2017

前言

前一段时间做项目时,遇到一个问题就是AngularJS实现图片预览和上传的功能,在Angular4中,通过input:file上传选择图片本地预览的时候,通过window.URL.createObjectURL获取的url赋值给image的src出现错误:

WARNING: sanitizing unsafe URL value

下面介绍一下解决方法:

html代码:

<input type="file" (change)="fileChange($event)" >
<img [src]="imgUrl" alt="">

其中,change方法会在每次选择图片后调用,image的src必须通过属性绑定的形式,使用插值表达式同样会出错

ts代码

import { Component, OnInit } from '@angular/core';
import { DomSanitizer } from '@angular/platform-browser' 
@Component({
 selector: 'my-app',
 templateUrl: './app.component.html',
 styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit { 
 imgUrl;
 constructor(
 private sanitizer: DomSanitizer
 ){} 
 ngOnInit() { } 
 fileChange(event){
 let file = event.target.files[0];
 let imgUrl = window.URL.createObjectURL(file);
 let sanitizerUrl = this.sanitizer.bypassSecurityTrustUrl(imgUrl); 
 this.imgUrl = sanitizerUrl;
 }
}

首先,引入DomSanitizer,然后在构造器里面注入,最重要的就是把window.URL.createObjectURL生成的imgUrl通过santizer的bypassSecurityTrustUrl方法,将它转换成安全路径。

最后将生成的安全的url赋值给imgUrl,此时就没有问题了~

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
在网页里看flash的trace数据的js类
Jan 10 Javascript
自编jQuery插件实现模拟alert和confirm
Sep 01 Javascript
基于jQuery实现响应式圆形图片轮播特效
Nov 25 Javascript
基于jquery编写的放大镜插件
Mar 23 Javascript
jquery radio的取值_radio的选中_radio的重置方法
Sep 20 Javascript
Boostrap实现的登录界面实例代码
Oct 09 Javascript
vuejs2.0实现分页组件使用$emit进行事件监听数据传递的方法
Feb 22 Javascript
微信小程序图片横向左右滑动案例
May 19 Javascript
vue组件初学_弹射小球(实例讲解)
Sep 06 Javascript
Vue底层实现原理总结
Feb 17 Javascript
vue 路由子组件created和mounted不起作用的解决方法
Nov 05 Javascript
ES11屡试不爽的新特性,你用上了几个
Oct 21 Javascript
JS实现十字坐标跟随鼠标效果
Dec 25 #Javascript
jQuery EasyUI window窗口使用实例代码
Dec 25 #jQuery
JS中使用textPath实现线条上的文字
Dec 25 #Javascript
Angular4.0中引入laydate.js日期插件的方法教程
Dec 25 #Javascript
JS实现标签滚动切换效果
Dec 25 #Javascript
JS实现图片居中悬浮效果
Dec 25 #Javascript
JS+CSS实现滚动数字时钟效果
Dec 25 #Javascript
You might like
编译php 5.2.14+fpm+memcached(具体操作详解)
2013/06/18 PHP
PHP读取txt文本文件并分页显示的方法
2015/03/11 PHP
jQuery EasyUI NumberBox(数字框)的用法
2010/07/08 Javascript
jquery删除ID为sNews的tr元素的内容
2014/04/10 Javascript
jQuery中each()方法用法实例
2014/12/27 Javascript
jQuery+ajax实现无刷新级联菜单示例
2015/05/21 Javascript
针对初学者的jQuery入门指南
2015/08/15 Javascript
jQuery Validate插件实现表单强大的验证功能
2015/12/18 Javascript
Bootstrap教程JS插件滚动监听学习笔记分享
2016/05/18 Javascript
深入理解React中es6创建组件this的方法
2016/08/29 Javascript
Javascript 闭包详解及实例代码
2016/11/30 Javascript
Javascript中call,apply,bind方法的详解与总结
2016/12/12 Javascript
setTimeout学习小结
2017/02/08 Javascript
详解React中的组件通信问题
2017/07/31 Javascript
EasyUI在Panel上动态添加LinkButton按钮
2017/08/11 Javascript
小程序图片长按识别功能的实现方法
2018/08/30 Javascript
原生JavaScript实现滑动拖动验证的示例代码
2019/12/06 Javascript
Vue 自适应高度表格的实现方法
2020/05/13 Javascript
[02:14]DOTA2英雄基础教程 修补匠
2013/12/23 DOTA
[01:01:18]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#2COL VS LGD
2016/03/03 DOTA
Python标准库与第三方库详解
2014/07/22 Python
Python ftp上传文件
2016/02/13 Python
python中模块查找的原理与方法详解
2017/08/11 Python
python爬虫解决验证码的思路及示例
2019/08/01 Python
Python内置类型性能分析过程实例
2020/01/29 Python
python随机模块random的22种函数(小结)
2020/05/15 Python
python基于socket模拟实现ssh远程执行命令
2020/12/05 Python
HTML5 的新的表单元素(datalist/keygen/output)使用介绍
2013/07/19 HTML / CSS
JavaScript+Canvas实现自定义画板的示例代码
2019/05/13 HTML / CSS
美国顶尖折扣时尚购物网:Bluefly
2016/08/28 全球购物
华为的Java面试题
2014/03/07 面试题
会计学个人自荐信模板
2013/12/13 职场文书
文秘求职信范文
2014/04/10 职场文书
2014企业年终工作总结
2014/12/23 职场文书
2015年学校政教工作总结
2015/07/20 职场文书
Nginx配置之实现多台服务器负载均衡
2021/08/02 Servers