js实现在浏览器当前标签页下下载url或base64格式的文件

如果想下载一个在线链接的文件且在浏览器左下角或右上角弹出下载项:如下图这种

实现思路:

把url或base64格式转为blob格式,然后借助a标签实现下载

 1、url转blob/base64

function fileToBase64(urls) {
      return new Promise((resolve, reject) => {
          window.URL = window.URL || window.webkitURL;
          var xhr = new XMLHttpRequest();
          xhr.open("GET", urls, true);
          xhr.responseType = "blob";
          xhr.send();
          xhr.onload = function () {
              if (this.status == 200) {
              // 至关重要
                  let oFileReader = new FileReader();
                  // 到这里就实现了转blob
                  var blob = this.response;
                  // resolve(blob)
                  // ----------------------------------
                  // 下面代码为blob转base64
                  oFileReader.readAsDataURL(blob);
                  oFileReader.onloadend = function (e) {
                      var baseBuff = e.target.result;
                      resolve(baseBuff)
                  }
                  
              }
          }
      });
    }

2、base64转blob

/**
 * 
 * @param {base字符串含前缀} baseBuf 
 * @param mime
 */
 function base64toBlob(base64Buf, mime) {
    const arr = base64Buf.split(',');
    const typeItem = arr[0];
    const bstr = atob(arr[1]);
    let n = bstr.length;
    const u8arr = new Uint8Array(n);
    while (n--) {
      u8arr[n] = bstr.charCodeAt(n);
    }
    return new Blob([u8arr], { type: mime || typeItem.match(/:(.*?);/)?.[1] });
}

3、a标签下载blob格式文件

/**
 * @param {*} data
 * @param {*} filename
 */
 function downloadByData(blob, filename) {
  if (typeof window.navigator.msSaveBlob !== 'undefined') {
    window.navigator.msSaveBlob(blob, filename);
  } else {
    const blobURL = window.URL.createObjectURL(blob);
    const tempLink = document.createElement('a');
    tempLink.style.display = 'none';
    tempLink.href = blobURL;
    tempLink.setAttribute('download', filename);
    if (typeof tempLink.download === 'undefined') {
      tempLink.setAttribute('target', '_blank');
    }
    document.body.appendChild(tempLink);
    tempLink.click();
    document.body.removeChild(tempLink);
    window.URL.revokeObjectURL(blobURL);
  }
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 JavaScript 中将 base64 编码转换为图片可以使用以下步骤: 1. 创建一个 Image 对象。 2. 设置该 Image 对象的 src 属性为 base64 编码的字符串。 3. 将该 Image 对象添加到 HTML 面中的某个元素中。 以下是一个示例代码: ```javascript // 假设 base64EncodedImage 是包含 base64 编码的图片数据的字符串 const base64EncodedImage = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH5AwQESgG8NXDgAAAgRJREFUWMPN1zFqAkEUx3eZI3+ZJoQzqxO22oi06D1IF/pRtbO9YtpOvqlUGgEiitZOkkj3qoFgSNbSJstHYqiRIrHSrK1rTsw1sUvC6Uebw+f+OZ56BTPmEiBCe8tkmFmGezADGmYfLOosvpkHiws7A+c4ZDnV7owNlAjSt8WbSwCtFXlH9N2mw5v5xWxwRZj5iZb/JvIm1WnoG8fOKFQXbZYugMB0zeiVdL8gWWxy4V7D1SHvOBrml7i8ykJjKXg3q5f5QWlg5xZcwog+tlZopM07MUsieogpjMk8oNbS9XxfktgT+TRKb6T8U6W4Uv1s+6kLff6Q/TLhV9xEvzLYf7VDPbhR1pyhHe1NNTfeH3qfOL67k18+ev8V7z9hMd0xV7qqEylLZpW7ZiurCxq3V7rgu3B32M77mnX9fOUxLx6bckAAAAASUVORK5CYII="; // 创建一个 Image 对象 const img = new Image(); // 设置 Image 对象的 src 属性为 base64 编码的字符串 img.src = base64EncodedImage; // 将 Image 对象添加到 HTML 面中的某个元素中 const imgContainer = document.getElementById("image-container"); imgContainer.appendChild(img); ``` 这将在 id 为 "image-container" 的元素中显示转换后的图片。注意,这里使用的是 base64 编码的 PNG 图片数据,如果使用的是其他格式的图片,需要将 "data:image/png" 替换为相应的 MIME 类型。 ### 回答2: JavaScript可以通过以下代码将Base64编码转换为图片: ```javascript function convertBase64ToImage(base64String) { var img = document.createElement('img'); img.src = base64String; document.body.appendChild(img); } ``` 上述代码中,我们首先创建了一个`<img>`元素,然后将传入的Base64字符串赋值给它的`src`属性。最后,将该图像元素添加到文档的`<body>`标签中,以显示图像。 使用示例: ```javascript var base64String = "data:image/png;base64,iVBORw0KGg...."; convertBase64ToImage(base64String); ``` 在上面的示例中,`base64String`变量包含一个Base64编码的PNG图像字符串。调用`convertBase64ToImage`函数后,图像将被显示在文档中。 请注意,为了使该方法正常工作,需要将`src`属性设置为有效的Base64图像字符串。此外,由于上传的图像可能很大,可能会导致浏览器内存占用过高或加载时间过长,因此在实际应用程序中,请谨慎使用此方法。 ### 回答3: 在JavaScript中,要将base64编码的数据转换为图片,可以使用以下步骤: 1. 首先,获取到包含base64编码的字符串。这个字符串通常是一个数据URL,以"data:image/png;base64,"开头,后面跟着一段base64编码的图片数据。 2. 接下来,需要创建一个Image对象。可以使用`new Image()`来创建一个新的Image实例。 3. 将上一步获取到的base64字符串赋值给Image对象的src属性。例如,可以使用`image.src = base64String`将base64字符串赋值给Image对象。 4. 在Image对象的load事件中,可以使用Canvas来绘制图片。创建一个Canvas元素,并设置其宽高与图片的宽高相同。 5. 将Image对象绘制到Canvas上,可以使用`context.drawImage(image, 0, 0, canvas.width, canvas.height)`将Image对象绘制到Canvas的左上角。 6. 最后,可以通过调用Canvas的`toDataURL()`方法将Canvas中的图片数据转换为base64编码的字符串。 下面是一个示例代码: ```javascript // 获取包含base64编码的字符串 let base64String = "data:image/png;base64,iVBORw0KG..."; // 创建一个Image对象 let image = new Image(); // 将base64字符串赋值给Image对象 image.src = base64String; // 在Image对象的load事件中,绘制图片到Canvas image.onload = function() { // 创建一个Canvas元素 let canvas = document.createElement('canvas'); // 设置Canvas的宽高与图片的宽高相同 canvas.width = image.width; canvas.height = image.height; // 绘制图片到Canvas let context = canvas.getContext('2d'); context.drawImage(image, 0, 0, canvas.width, canvas.height); // 将Canvas中的图片数据转换为base64编码的字符串 let convertedBase64 = canvas.toDataURL(); console.log(convertedBase64); }; ``` 以上就是使用JavaScriptbase64编码的数据转换为图片的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值