例如我们用某些 裁剪插件 得到的图片是
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAYAAABIdFAMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHhJREFUeNo8zjsOxCAMBFB/ KEAUFFR0Cbng3nQPw68ArZdAlOZppPFIBhH5EAB8b+Tlt9MYQ6i1BuqFaq1CKSVcxZ2Acs6406KUgpt5/ LCKuVgz5BDCSb13ZO99ZOdcZGvt4mJjzMVKqcha68iIePB86GAiOv8CDADlIUQBs7MD3wAAAABJRU5ErkJggg==">
这样的,那这样的文件怎样在from 表单上传(当然我是举例,大部分的裁剪插件都是有内置的)
首先需要 吧 base64 流转换成 blob 对象,文件对象都继承它。
函数如下:
function getBlobBydataURI(dataURI,type) {
var binary = atob(dataURI.split(',')[1]);
var array = [];
for(var i = 0; i < binary.length; i++) {
array.push(binary.charCodeAt(i));
}
return new Blob([new Uint8Array(array)], {type:type });
}
那么剩下的就作为文件上传就ok
var $Blob= getBlobBydataURI(base64Data,'image/png');
var formData = new FormData();
formData.append("files", $Blob ,"file_"+Date.parse(new Date())+".png");
全部代码是这样子的:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>上传用例</title>
<meta content='width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no' name='viewport'>
<script type="text/javascript">
/**
* 根据base64 内容 取得 bolb
*
* @param dataURI
* @returns Blob
*/
function getBlobBydataURI(dataURI,type) {
var binary = atob(dataURI.split(',')[1]);
var array = [];
for(var i = 0; i < binary.length; i++) {
array.push(binary.charCodeAt(i));
}
return new Blob([new Uint8Array(array)], {type:type });
}
/**
* 上传
*/
function upload(){
//base64 转 blob
var $Blob= getBlobBydataURI(document.getElementsByTagName("img")[0].currentSrc,'image/jpeg');
var formData = new FormData();
formData.append("files", $Blob ,"file_"+Date.parse(new Date())+".jpeg");
//组建XMLHttpRequest 上传文件
var request = new XMLHttpRequest();
//上传连接地址
request.open("POST", "www.xxx.com");
request.onreadystatechange=function()
{
if (request.readyState==4)
{
if(request.status==200){
console.log("上传成功");
}else{
console.log("上传失败,检查上传地址是否正确");
}
}
}
request.send(formData);
}
</script>
</head>
<body>
<button onclick="upload()">上传测试</button>
<br />
上传的图片:
<img src="data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAeAB4AAD/4QAiRXhpZgAATU0AKgAAAAgAAQESAAMAAAABAAEAAAAAAAD/2wBDABsSFBcUERsXFhceHBsgKEIrKCUlKFE6PTBCYFVlZF9VXVtqeJmBanGQc1tdhbWGkJ6jq62rZ4C8ybqmx5moq6T/wAALCABQADEBAREA/8QAGgAAAwADAQAAAAAAAAAAAAAAAwQFAAECBv/EADQQAAIBAwMCAgcGBwAAAAAAAAECAwAEEQUSITFBE1EVImFxgaHwBiMykbHRFEJDcoKiwf/aAAgBAQAAPwD0tc5AGc1MuftBYW7FfEMrDtGM/Ohp9pbNmUNHOgbo7qAP1p60vra8z4E6uR1HcfCmVrKHc3EdrBJNI2FUZNSIreXWR41w7xW38kSnBYebe/686o2ljaWwPgQxqemRyT8aO8UTqVeJWHkQKlzaHDuaS0Y28/VSh9X3EeX17KNpWoPc+Lb3KBLiDhwOhHmKo5qPqY9Iajb6eM+Go8aX2jsK71dmhW2tIcxrcSCNivUKeuKnw2mnyXc1rbJcRzxAnxd/UijwajdXkVlbrIqSXCsXkA5wCRx7eDQ7i4i024KxXV3PMuGKytlD8vLP5UfUHCXunaimVEuEYDqQeRVmpthg61qjHqPDH+p/anL+0F1Eu1gskbB42Izhh0pA2mqSho3a1h38PLGvrMK3Ppj24tpbHBktl2hWON47/Hmg3FnPduxbThbyyDa0xlDBR34HsouvRCLSIYlOdjoo+FP+tU6+b0Zq63pH3E6iOU4/Cex+VWI5FkUMrAg9CO9BvEnlgZLaURy54YjOKniy1sHPpKM/4D9qqqWCgOctgZ46mpN4w1HWLe1TlLY+LIfb2FWKHPBHcxtHKgZWGCCKi2y3FnqbWdlJ40CgM6yf0xnoD9frV+sqPrt1eWsG6EbIzgNL3XnsPr/tOaXZQWduFhbfv9ZnPVj503trrApeG0hgllkiTa0xzIck5P0TTGKzFDmhjnieKRdyOMMOmayGJIYkijXaqDCjOcCi1ql5ruGGQRt4hcjdhI2fj4A1w2oQqMsJ1Hm1vIB+eKJLdRQuElbYCMh24X3Z86WXWLJtv3yDchfl14x2PPWmra4juYEmiIKsM9c49nvo9aqXdyPHf+LGWXbHsObeSQdc8YwPnS5vnvrdgk6uN2DttJOx8wTinJ3dZFmhuCrSIQscqHacc5x1HGaQWYiaFI2UoYWCsLSX8ORwBu5B8/3qrpxJs4zuRlx6hQEAr24PNN1qlXhlnkKykCDPCLzv/uPl7Pn2ocVm8UZKSBJd7MGAyCCxIBHfrW/4eaa4Es2xQIigCknDE8noOwFci0mjeAwyIPCgMW5lJycr2yPI96ZtIBbWscAbdsUDPnR6/9k=" />
</body>
</html>
以上所述是小编给大家介绍的JavaScript Base64 作为文件上传的实例代码解析,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
# js
# base64
# 文件上传
# JS加密插件CryptoJS实现的Base64加密示例
# JS实现的3des+base64加密解密算法完整示例
# js 图片转base64的方式(两种)
# JS实现的base64加密解密操作示例
# JavaScript BASE64算法实现(完美解决中文乱码)
# js实现把图片的绝对路径转为base64字符串、blob对象再上传
# 基于JavaScript获取base64图片大小
# 上传
# 小编
# 我是
# 是有
# 在此
# 给大家
# 这样子
# 表单
# 所述
# 给我留言
# 感谢大家
# 是否正确
# 上传文件
# 疑问请
# 有任何
# DOCTYPE
# Uint8Array
# formData
# Blob
相关文章:
网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?
建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略
php条件判断怎么写_ifelse和switchcase的使用区别【对比】
北京营销型网站制作公司,可以用python做一个营销推广网站吗?
网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?
高性能网站服务器部署指南:稳定运行与安全配置优化方案
h5在线制作网站电脑版下载,h5网页制作软件?
,石家庄四十八中学官网?
建站之星展会模板:智能建站与自助搭建高效解决方案
佛山网站制作系统,佛山企业变更地址网上办理步骤?
如何选择CMS系统实现快速建站与SEO优化?
油猴 教程,油猴搜脚本为什么会网页无法显示?
网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?
已有域名如何免费搭建网站?
早安海报制作网站推荐大全,企业早安海报怎么每天更换?
制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?
如何用美橙互联一键搭建多站合一网站?
高端建站如何打造兼具美学与转化的品牌官网?
制作证书网站有哪些,全国城建培训中心证书查询官网?
广州美橙建站如何快速搭建多端合一网站?
个人摄影网站制作流程,摄影爱好者都去什么网站?
北京企业网站设计制作公司,北京铁路集团官方网站?
nginx修改上传文件大小限制的方法
定制建站哪家更专业可靠?推荐榜单揭晓
如何在阿里云ECS服务器部署织梦CMS网站?
php8.4新语法match怎么用_php8.4match表达式替代switch【方法】
网站制作难吗安全吗,做一个网站需要多久时间?
制作网站公司那家好,网络公司是做什么的?
如何做静态网页,sublimetext3.0制作静态网页?
开源网站制作软件,开源网站什么意思?
专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?
深圳网站制作培训,深圳哪些招聘网站比较好?
广州顶尖建站服务:企业官网建设与SEO优化一体化方案
如何用虚拟主机快速搭建网站?详细步骤解析
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
如何破解联通资金短缺导致的基站建设难题?
独立制作一个网站多少钱,建立网站需要花多少钱?
北京网站制作的公司有哪些,北京白云观官方网站?
网站制作新手教程,新手建设一个网站需要注意些什么?
内网网站制作软件,内网的网站如何发布到外网?
c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗
GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?
弹幕视频网站制作教程下载,弹幕视频网站是什么意思?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
建站主机选哪种环境更利于SEO优化?
如何通过老薛主机一键快速建站?
大型企业网站制作流程,做网站需要注册公司吗?
如何在香港服务器上快速搭建免备案网站?
成都网站制作公司哪家好,四川省职工服务网是做什么用?
建站之星导航如何优化提升用户体验?
*请认真填写需求信息,我们会在24小时内与您取得联系。