JS中怎么将base64转换成file

前端开发   发布日期:2025年02月23日   浏览次数:182

本篇内容主要讲解“JS中怎么将base64转换成file”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JS中怎么将base64转换成file”吧!

js将base64转换成file

  1. dataURLtoBlob(dataurl, name) {//base64转file
  2. var arr = dataurl.split(','),
  3. mime = arr[0].match(/:(.*?);/)[1],
  4. bstr = atob(arr[1]),
  5. n = bstr.length,
  6. u8arr = new Uint8Array(n)
  7. while (n--) {
  8. u8arr[n] = bstr.charCodeAt(n)
  9. }
  10. return new File([u8arr], name, {
  11. type: mime,
  12. })
  13. },
  1. this.dataURLtoBlob(imgDataUrl,name)//imgDataUrl是base64格式编码 name是图片名字

将Base64转file对象,将图片转Base64

  1. //将图片转换为Base64
  2. function getImgToBase64(url,callback){
  3. var canvas = document.createElement('canvas'),
  4. ctx = canvas.getContext('2d'),
  5. img = new Image;
  6. img.crossOrigin = 'Anonymous';
  7. img.onload = function(){
  8. canvas.height = img.height;
  9. canvas.width = img.width;
  10. ctx.drawImage(img,0,0);
  11. var dataURL = canvas.toDataURL('image/png');
  12. callback(dataURL);
  13. canvas = null;
  14. };
  15. img.src = url;
  16. }
  17. //将base64转换为文件对象
  18. function dataURLtoFile(dataurl, filename) {
  19. var arr = dataurl.split(',');
  20. var mime = arr[0].match(/:(.*?);/)[1];
  21. var bstr = atob(arr[1]);
  22. var n = bstr.length;
  23. var u8arr = new Uint8Array(n);
  24. while(n--){
  25. u8arr[n] = bstr.charCodeAt(n);
  26. }
  27. //转换成file对象
  28. return new File([u8arr], filename, {type:mime});
  29. //转换成成blob对象
  30. //return new Blob([u8arr],{type:mime});
  31. }
  32. //将图片转换为base64,再将base64转换成file对象
  33. getImgToBase64('images/ruoshui.png',function(data){
  34.    var myFile = dataURLtoFile(data,'testimgtestimgtestimg');
  35.    console.log(myFile);
  36. });
  37. // 将 file 转 base64
  38. blobToDataURL (blob, cb) {
  39. const reader = new FileReader()
  40. reader.onload = function (evt) {
  41. cb(evt.target.result)
  42. }
  43. reader.readAsDataURL(blob)
  44. },

js图片base64转file文件两种方式

最近项目中需要实现把图片的base64编码转成file文件的功能,然后再上传至服务器。起初是直接通过new File()的方式进行转换,在各个主流的浏览器基本上都支持,Android也没问题,但是在ios系统埋了个坑,ios11.4以下的系统上传失败。

定位bug发现是new File()这个方法不兼容ios系统,只能另辟蹊径,最后找到一个方法就是:

将base64转成blob ——> blob转成file

这种方式测试通过,解决了new File()不兼容ios系统问题。

下面将base64转file文件两种方式的代码贴出来:

1.通过new File()将base64转换成file文件,此方式需考虑浏览器兼容问题。

  1. //将base64转换为文件
  2. dataURLtoFile: function(dataurl, filename) {
  3. var arr = dataurl.split(','),
  4. mime = arr[0].match(/:(.*?);/)[1],
  5. bstr = atob(arr[1]),
  6. n = bstr.length,
  7. u8arr = new Uint8Array(n);
  8. while (n--) {
  9. u8arr[n] = bstr.charCodeAt(n);
  10. }
  11. return new File([u8arr], filename, { type: mime });
  12. },
  13. //调用
  14. var file = dataURLtoFile(base64Data, imgName);

2.先将base64转换成blob,再将blob转换成file文件,此方法不存在浏览器不兼容问题。

  1. //将base64转换为blob
  2. dataURLtoBlob: function(dataurl) {
  3. var arr = dataurl.split(','),
  4. mime = arr[0].match(/:(.*?);/)[1],
  5. bstr = atob(arr[1]),
  6. n = bstr.length,
  7. u8arr = new Uint8Array(n);
  8. while (n--) {
  9. u8arr[n] = bstr.charCodeAt(n);
  10. }
  11. return new Blob([u8arr], { type: mime });
  12. },
  13. //将blob转换为file
  14. blobToFile: function(theBlob, fileName){
  15. theBlob.lastModifiedDate = new Date();
  16. theBlob.name = fileName;
  17. return theBlob;
  18. },
  19. //调用
  20. var blob = dataURLtoBlob(base64Data);
  21. var file = blobToFile(blob, imgName);

目前方法二在项目中已经可以正常使用。

以上就是JS中怎么将base64转换成file的详细内容,更多关于JS中怎么将base64转换成file的资料请关注九品源码其它相关文章!