AngularJS用原生的fileinput上传图片
2016-11-30 18:59
381 查看
问题描述:在Angular环境中,使用<input type='file' id='fileUpload'>这个控件进行上传文件,不通过表单提交的方法,而且需要将得到的图片进行裁剪
解决方法:
先通过
angualr.element(document.querySelector('#fileUpload)).on('change',fileHandler);
为input空间注册一个绑定的监控事件,fileHandler是这样定义的
function(evt){
var file = evt.currentTarget.file[0];
var reader = new FileReader();
reader.readAsDateURL(url);
reader.onload = function(evt){
evt.target.result//即为所取到的file的DataURL
}
}
转换成DataURL是为了可以在<img src="" />标签中展示,为了图片的裁剪,在得到最终想要的文件的DataURL后需要将DataURL恢复成文件对象,这里目前只能做到将DataURL转换成Blob对象,这样就可以进行向后台发送。转换函数如下:
function dataURLtoBlob(dataurl){
var arr = dataurl.split(','),
mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]), n = bstr.length, u8arr = new Unit8Array(n);
while(n--){
u8arr
= bstr.charCodeAt(n);
}
return new Blob([u8arr],{type:mime});
}
返回的对象就可以进行发送,发送的代码格式为,
var fd = new FormData();
fd.append("image",data);
$http({
method:'POST',
url:/xxxx,
headers:{
'Content-Type':undefined
},
data: FormData对象
})
修改Blob对象的后缀名,可以直接转换成原来的类型的图片。
解决方法:
先通过
angualr.element(document.querySelector('#fileUpload)).on('change',fileHandler);
为input空间注册一个绑定的监控事件,fileHandler是这样定义的
function(evt){
var file = evt.currentTarget.file[0];
var reader = new FileReader();
reader.readAsDateURL(url);
reader.onload = function(evt){
evt.target.result//即为所取到的file的DataURL
}
}
转换成DataURL是为了可以在<img src="" />标签中展示,为了图片的裁剪,在得到最终想要的文件的DataURL后需要将DataURL恢复成文件对象,这里目前只能做到将DataURL转换成Blob对象,这样就可以进行向后台发送。转换函数如下:
function dataURLtoBlob(dataurl){
var arr = dataurl.split(','),
mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]), n = bstr.length, u8arr = new Unit8Array(n);
while(n--){
u8arr
= bstr.charCodeAt(n);
}
return new Blob([u8arr],{type:mime});
}
返回的对象就可以进行发送,发送的代码格式为,
var fd = new FormData();
fd.append("image",data);
$http({
method:'POST',
url:/xxxx,
headers:{
'Content-Type':undefined
},
data: FormData对象
})
修改Blob对象的后缀名,可以直接转换成原来的类型的图片。
相关文章推荐
- 利用原生的 file input上传 图片
- 简易上传图片原生input-file实现方案
- 在套用母版页的页面中使用input file上传图片
- 添加图片如何点击a标签, 弹出input file 上传文件对话框
- 上传图片预览JS脚本 Input file图片预览的实现示例
- Jq_input file标签上传图片到服务器
- 上传图片预览JS脚本 Input file图片预览的实现示例
- <input id="File_Audio" type="file" /> 一步到位上传图片、音频等文件
- input file实现多张图片上传
- html5手机 input file 上传图片 调用API
- 处理同一页面中借助form+input[type="file"]上传图片出现的input无法清空问题
- html5手机 input file 上传图片 调用API
- 修改 上传图片按钮input-file样式。。
- html,图片上传预览,input file获取文件等相关操作
- html input控件type为file上传文件、图片,及保存为原文件
- 上传图片input-file表单元素值为C://fakepath,不能得到本地真实路径解决方法
- (转)html中使用表单和input file上传图片
- 一段上传图片预览JS脚本,Input file图片预览的实现
- 破晓之阳原创『上传图片』之HtmlInputFile控件
- 纯CSS定义input file样式及上传图片预览 CSS