zoukankan      html  css  js  c++  java
  • 移动端下载图片

    a标签加download属性,有同源限制,把图片转换下再下载

    利用canvas的toDataUri方法

    // 已有远程且非同源图片链接originUrl
    saveImg() {
      const img = new Image();
      img.src = originUrl;
      img.setAttribute('crossOrigin', 'Anonymous');  
    
      img.onload = () => {
        const canvas = document.createElement('canvas');
        canvas.width = 350;
        canvas.height = 350;
    
        const ctx = canvas.getContext('2d');
        ctx.drawImage(img, 0, 0, 350, 350);
        // 或使用toBlob转为blob对象
        const imgDataUri = ctx.toDataURL(); // <图片属性><图片质量>('image/png', 0.92)
        // 利用a标签下载
        const a = document.createElement('a');
        a.download = '';
        a.href = imgDataUri;
        document.body.appendChild(a);
        a.click();
        a.remove();
      }
    }
    

    使用window.URL.createObjectURL转换文件然后下载

    const src = '文件路径';
    // 直接请求此文件路径并设置restype为blob格式
    const xhr = new XMLHttpRequest();
    xhr.open('GET', src);
    xhr.responseType = 'blob';
    
    xhr.onreadystatechange = async function () {
        if (xhr.readyState === 4) {
          if (xhr.status === 200 || xhr.status === 304) {
             const blob = xhr.response;
             const url = window.URL.createObjectURL(blob);
             const a = document.createElement('a');
             a.href = url;
             a.download = '';
             a.click();
             a.remove();
           }
        }
    };
    xhr.send();
    
  • 相关阅读:
    第一章 新手入门
    Excle生成T层加工ODS层存储过程
    Excel生成建表角本
    数据仓库建模技巧
    算法第四章作业
    删数问题
    算法第三章作业
    第三章上机实践报告
    第二章作业
    Thinkphp6框架学习:($this->error()undefined)Call to undefined method appindexcontrollerAdmin::error()
  • 原文地址:https://www.cnblogs.com/laine001/p/14696688.html
Copyright © 2011-2022 走看看