android系统定制开发js保存图片至本地

android系统定制开发第一种方法

downloadIamge(imgSrc, fileName) { // imgSrc android系统定制开发为图片链接路径

// 必须同源才能下载

  var alink = document.createElement("a");

  alink.href = imgSrc;

  alink.download = fileName; //fileName保存提示中用作预先填写的文件名

  alink.click();

}

第二种方法

downloadIamge:function(imgSrc, fileName) { //图片地址和图片默认名称

    let image = new Image();

    image.src = imgSrc;

    // Canvas 污染问题

    image.setAttribute("", "Anonymous"); // 支持跨域

    image.onload = function() {

        var canvas = document.createElement("canvas");

        canvas.width = image.width;

        canvas.height = image.height;

        var context = canvas.getContext("2d");

        context.(image, 0, 0, image.width, image.height);

        var url = canvas.toDataURL("image/png"); //得到图片的base64编码数据

        var a = document.createElement("a"); // 生成一个a元素

        var event = new MouseEvent("click"); // 创建一个单击事件

        a.download = fileName || "photo"; // 设置图片名称

        a.href = url; // 将生成的URL设置为a.href属性

        a.dispatchEvent(event); // 触发a的单击事件

      };      

},

第三种方法

downloadFile(fileUrl)  {

  const a = document.createElement('a') 

  //   let url = baseUrl + binding.value // 若是不完整的url则需要拼接baseURL

  const url = fileUrl // 完整的url则直接使用

  // 这里是将url转成blob地址,

  fetch(url)  // 跨域时会报错

    .then(res => res.blob())

    .then(blob => { // 将链接地址字符内容转变成blob地址

      a.href = URL.createObjectURL(blob) 

      console.log(a.href) 

      a.download = binding.value.name || '' // 下载文件的名字

      // a.download = url.split('/')[url.split('/').length -1] //  // 下载文件的名字

      document.body.appendChild(a) 

      a.click() 

      //在资源下载完成后 清除 占用的缓存资源

      window.URL.revokeObjectURL(a.href);

      document.body.removeChild(a); 

    })

}

第四种方法

function savePic(){

  var img = document.getElementById('imgId');

  var imgSrc = img.src; // 文件或图片的url地址

  savePicture(imgSrc);

}

function savePicture(url){  

    let xhr = new XMLHttpRequest();

    xhr.open('get', url, true);

    xhr.responseType = 'blob' ; //arraybuffer也可以

    xhr.ontimeout = ()=>{};

    xhr.onreadystatechange=()=>{

        if(xhr.readyState=== XMLHttpRequest.DONE) { // 4 DONE 下载操作已完成

            if(xhr.status =200) {  //status 200 代表一个成功的请求     

            };

         };

    }};

    xhr.onprogress = function () {

      console.log('LOADING', xhr.status);

    };

    xhr.onload = function () {

      console.log('DONE', xhr.status);

      let blob = xhr.response;  // response 属性返回响应的正文,取决于  属性。

      // 下载完成,创建一个a标签用于下载

      let a = document.createElement("a");

      a.download = imgSrc.replace(/(.*\/)*([^.]+.*)/ig,"$2").split("?")[0]; //保存提示中用作预先填写的文件名

      a.href = URL.createObjectURL(blob) ;

      document.body.appendChild(a);

      a.click();

      // let e = document.createEvent('MouseEvents');

      // e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);

      // a.dispatchEvent(e);

      // 在资源下载完成后 清除占用的缓存资源

      setTimeout(function(){

         URL.revokeObjectURL(blob);

          document.body.removeChild(a);

      }, 200)

    };

    xhr.send(null); //XMLHttpRequest.send() 方法接受一个可选的参数,其作为请求主体;如果请求方法是 GET 或者 HEAD,则应将请求主体设置为 null

}

参考:

参考地址:

  • MDN a标签的说明:

  • MDN 关于toDataURL 说明: 

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发