angularJS <input type="file> 图片的base64编码
talk is cheap show me the code
<input type="file" id="file" name="file"
ng-model="Ctrl.picture"
accept="image/jpeg,image/png,image/jpg"
onchange="angular.element(this).scope().deCtrl.handleConFiles(this.files)">
坑一:angularJS的input-file会让ng-change失效
解决办法是用onchange覆盖ng-change,格式为:
onchange="angular.element(this).scope().yourfunction()
如何才能获取图片的base64编码?
HTML代码里,onchange事件触发的handleConFiles函数,如下:
function handleConFiles(files){
var file = files[0];
var reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = function(theFile) {
console.log(theFile.target.result) //base64编码
};
}
注意第二行,file=files[0],如果不加这一行,会报错
Uncaught TypeError: Failed to execute 'readAsDataURL' on 'FileReader': parameter 1 is not of type 'Blob'.
具体原因暂时还不清楚,猜测是参数类型的问题,欢迎dalao们留言指正。
FileReader()读取文件,readAsDataURL读取指定file or Blob对象中的内容。关于更多FileReader的知识,猛戳这里
theFile.target.result就是需要的图片base64编码,也不完全是。
这里获取的base64字符串具有一定的格式,console.log(theFile.target.result)会发现,打印出来的数据为:
data:image/png;base64,base64string
前缀是对后面字符串的修饰和说明,指明这是一张图片的base64编码字符串,因此如果需要做图片预览,直接赋值给src就可以了
<img ng-src="{{Ctrl.picture}}">
到此获取到了图片的base64编码,结束?
NO!
这里还有一个坑。。。。
虽然获取到了图片的base64编码,同时也绑定到了picture上,但是提交表单的时候,picture的值为C://fakepath/图片名。
猜想是由于ng-model绑定着picture的值,选取文件默认赋值为C://fakepath/..因而后续的表单操作使得已经获取到的base64编码字符串被覆盖。picture的值还原为C://fakepath/..
解决办法:获取到base64编码之后,用一个变量存储该字符串,在提交表单时再赋值给picture
本篇完!
angularJS <input type="file> 图片的base64编码的更多相关文章
- input type=file 图片上传相关
HTML: <input type="file" name="address" onchange='PreviewImage(this)' value ...
- input type = file 上传图片转为base64
项目背景是做图片识别,接口需要上传图片格式为base64格式的,react项目的相关代码: let reader = new FileReader();reader.readAsDataURL(e.t ...
- 将input type="file" 类型的图片文件转成base64
带有图片的form表单上传数据是很麻烦的,因为图片通常都是和文字分开上传,这是很麻烦的,所有吧图片转成base64就可以和当成文字上传了.话不多少,看代码: 首先定义一个类型为file的input标签 ...
- 有关图片上传的相关知识input type=file,HTML5的 input:file上传类型控制
遇到项目,要求做一个影像系统,对于前端开发需要了解file的相关属性,以及如何开发.工欲善其事,必先利器嘛.度娘一阵子搜索,找资料.这年头,需要的是你解决问题的能力啊! 参考应用:https://ww ...
- input type=file 选择图片并且实现预览效果的实例
为大家带来一篇input type=file 选择图片并且实现预览效果的实例. 通过<input />标签,给它指定type类型为file,可提供文件上传: accept:可选择上传类型, ...
- input[type="file"]上传图片并显示图片
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- input type=file 选择图片并且实现预览效果
通过<input />标签,给它指定type类型为file,可提供文件上传: accept:可选择上传类型,如:只要传图片,且不限制图片格式,为image/*: multiple:规定是否 ...
- input[type=file]上传图片及转为base64码以及预览
<input type="file" id="imgurl" capture="camera" accept="image/ ...
- 关于PHP HTML <input type="file" name="img"/>上传图片,图片大小,宽高,后缀名。
在我们的系统中,不免要上传图片,视频等文件,在上传中,需要做的一些判断,文件大小等方面. 注意: 在php.ini 中的post_max_size,upload_max_filesize默认为2M,在 ...
随机推荐
- Git 学习笔记之(三)将本地工程导入到GitHub 仓库中
一:操作步骤第一步:建立git仓库 cd到你的本地项目根目录下,执行git命令,此命令会在当前目录下创建一个.git文件夹. git init 第二步:将项目的所有文件添加到仓库中 git add . ...
- List与Set区别
List: 元素有序放入,元素可重复 Set: 元素无序保存,元素不可重复(通过==判断,非基本类型判断的是引用地址),因为set是无序的,故只能通过迭代器循环.ps:说是无序,但是其实set中的元素 ...
- centos中mariadb的相关操作
Tip 1 在使用mariadb中启动服务报错 : Failed to start mariadb.service: Unit not found. 解决办法: yum install -y mari ...
- 服务端相关知识学习(三)Zookeeper的配置
前面两篇文章介绍了Zookeeper是什么和可以干什么,那么接下来我们就实际的接触一下Zookeeper这个东西,看看具体如何使用,有个大体的感受,后面再描述某些地方的时候也能在大脑中有具体的印象.本 ...
- python中获取当前位置所在的行号和函数名(转)
http://www.vimer.cn/2010/12/%E5%9C%A8python%E4%B8%AD%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8D%E4%BD%8D%E7 ...
- Python习题之快乐的数字
快乐的数字 描述 编写一个算法来确定一个数字是否“快乐”. 快乐的数字按照如下方式确定:从一个正整数开始,用其每位数的平方之和取代该数,并重复这个过程,直到最后数字要么收敛等于1且一直等于1,要么将无 ...
- Windows环境用Xampp自制证书(certificate), Chrome(版本 60.0.3112.90通过)
标题: Self signed certificate no longer valid as of Chrome 58(Chrome58以后自制证书不再有效)原文地址: https://github. ...
- kettle Spoon.bat闪退解决办法
1.Java环境配置问题 java_home:D:\Program Files\Java\jdk1.7.0_25(安装jdk路径) classpath:.;%java_home%\lib\dt.jar ...
- Hadoop_10_HDFS 的 DataNode工作机制
1.DataNode的工作机制: 1.DataNode工作职责:存储管理用户的文件块数据 定期向namenode汇报自身所持有的block信息(通过心跳信息上报) (这点很重要,因为,当集群中发生某 ...
- Mike and Feet CodeForces - 548D (单调栈)
Mike is the president of country What-The-Fatherland. There are n bears living in this country besid ...