全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

JavaScript Base64 作为文件上传的实例代码解析

例如我们用某些 裁剪插件 得到的图片是 

<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小时内与您取得联系。