首页 > 其他分享 >几种下载文件的方法

几种下载文件的方法

时间:2024-01-03 17:34:55浏览次数:37  
标签:文件 canvas URL 几种 href let blob link 下载

1.URL.createObjectURL

let link = document.createElement('a');
link.download = 'hello.txt';

let blob = new Blob(['Hello, world!'], {type: 'text/plain'});

link.href = URL.createObjectURL(blob);

link.click();

URL.revokeObjectURL(link.href);

2. reader.readAsDataURL

let link = document.createElement('a');
link.download = 'hello.txt';

let blob = new Blob(['Hello, world!'], {type: 'text/plain'});

let reader = new FileReader();
reader.readAsDataURL(blob); // 将 Blob 转换为 base64 并调用 onl oad

reader.onload = function() {
  link.href = reader.result; // data url
  link.click();
};

3. Image 转换为 blob 复制图片

// 获取任何图像
let img = document.querySelector('img');

// 生成同尺寸的 <canvas>
let canvas = document.createElement('canvas');
canvas.width = img.clientWidth;
canvas.height = img.clientHeight;

let context = canvas.getContext('2d');

// 向其中复制图像(此方法允许剪裁图像)
context.drawImage(img, 0, 0);
// 我们 context.rotate(),并在 canvas 上做很多其他事情

// toBlob 是异步操作,结束后会调用 callback
canvas.toBlob(function(blob) {
  // blob 创建完成,下载它
  let link = document.createElement('a');
  link.download = 'example.png';

  link.href = URL.createObjectURL(blob);
  link.click();

  // 删除内部 blob 引用,这样浏览器可以从内存中将其清除
  URL.revokeObjectURL(link.href);
}, 'image/png');

如果我们更喜欢 async/await 而不是 callback:
let blob = await new Promise(resolve => canvasElem.toBlob(resolve, 'image/png'));
let link = document.createElement('a');
link.download = 'example.png';

link.href = URL.createObjectURL(blob);
link.click();

// 删除内部 blob 引用,这样浏览器可以从内存中将其清除
URL.revokeObjectURL(link.href);

4.划线点击确定可以下载所画的截图

<canvas id="canvasElem" width="100" height="80" style="border:1px solid"></canvas>
  <input type="button" value="确定" onclick="submit()">

  <script>
    canvasElem.onmousemove = function(e) {
      let ctx = canvasElem.getContext('2d');
      ctx.lineTo(e.clientX, e.clientY);
      ctx.stroke();
    };

    async function submit() {
      let blob = await new Promise(resolve => canvasElem.toBlob(resolve, 'image/png'));
      let link = document.createElement('a');
      link.download = 'example.png';

      link.href = URL.createObjectURL(blob);
      link.click();

      // 删除内部 blob 引用,这样浏览器可以从内存中将其清除
      URL.revokeObjectURL(link.href);
    }
  </script>

标签:文件,canvas,URL,几种,href,let,blob,link,下载
From: https://blog.51cto.com/u_16492634/9087180

相关文章

  • Windows 10, version 22H2 (updated Jun 2023) 中文版、英文版下载
    Windows10,version22H2(updatedJun2023)中文版、英文版下载作者主页:sysin.orgWindows10更新历史记录Windows10,version22H2,alleditions发布日期:2022/10/18版本:Windows10,版本22H2Windows10版本信息2022/10/19从Windows10版本21H2开始,Windows10版本的......
  • Windows 11 22H2 中文版、英文版 (x64、ARM64) 下载 (updated Jun 2023)
    Windows11绕过TPM方法总结,通用免TPM镜像下载(2023年6月更新)在虚拟机、Mac电脑和TPM不符合要求的旧电脑上安装Windows11的通用方法总结作者主页:sysin.org本文要解决的问题:如何安装Windows11虚拟机绕过TPM检测,Windows11ISO虚机直装镜像下载。如何在没有TPM......
  • macOS Sonoma 14 beta 3 (23A5286i) ISO、IPSW、PKG 下载,公共测试版现已推出
    macOSSonoma14beta3(23A5286i)ISO、IPSW、PKG下载,公共测试版现已推出本站下载的macOS软件包,既可以拖拽到Applications(应用程序)下直接安装,也可以制作启动U盘安装,或者在虚拟机中启动安装。另外也支持在Windows和Linux中创建可引导介质。作者主页:sysin.orgmacOSSonom......
  • win10玩游戏-提示缺少ActivationClient.dll文件无法启动程序的解决方
    相信不少同学都遇到过,在启动游戏的时候,系统弹出缺少“ActivationClient.dll”文件无法启动的情况。不熟悉的朋友,常常以为是软件或游戏安装出现了异常,造成的。其实并不是游戏安装有异常,问题出在当前的操作系统中没有“ActivationClient.dll”文件,或者改文件丢失了,只要我们找到这个文......
  • 电脑“KBDSMSNO.DLL文件缺失”,软件或游戏无法启动的解决方法
    不少用户在日常使用电脑的时候,很多都遇到过,启动游戏或软件的时候,Windows桌面会弹出错误提示框“KBDSMSNO.DLL文件缺失,软件无法启动或运行,请尝试重新安装解决”。在Windows操作系统中,DLL文件是非常重要的,它们被用于存储执行许多程序的函数和程序。KBDSMSNO.DLL是一个动态链接库文件......
  • 阿里modelscope下载模型
    个人上传的模型地址:(需要注意,这个模型参数只做测试之用,并无实际意义)https://modelscope.cn/models/devilmaycry812839668/devil/summary注意,这里的密码是指pythonsdk的验证字符:模型仓库下载到本地:PS.这个modelscope最初的设立目标是可以在线运行AI项目,同时也具......
  • Windows系统进程svchost.exe在后台偷偷下载数据消耗流量
    手机开热点给电脑用,发现电脑网络很慢,用360流量防火墙检查流量情况,发现svchost.exe一直在偷偷搞我流量,整了1个多G,心痛。又是流氓东西。网上查了一下,svchost.exe是系统进程,还不能随便删除停用啥的,于是只能想办法禁止它使用网络。目前我的处理方法是在360流量防火墙上把svchost.exe的......
  • Apache Commons VFS(虚拟文件系统)使用详解
    第1章:ApacheCommonsVFS简介大家好,我是小黑,今天我们来聊聊ApacheCommonsVFS(虚拟文件系统)。想必很多朋友都听说过或者用过ApacheCommons的其他库,但是VFS可能还有点陌生。那么,什么是ApacheCommonsVFS呢?简单来说,它是一个用于处理各种类型文件系统的Java库。不管是本地文件系......
  • Visual Studio 2022 for Mac v17.0 发布,离线安装包下载
    为Mac打造的.NETIDE2022年5月23日,印度微软公布了VisualStudio2022forMacv17.0正式版发布(GA)的消息,并且现在可以下载了。这是迄今为止最快的VisualStudioforMac版本(sysin),具有全新的原生macOSUI,完全在.NET6上运行,并针对AppleSilicon(ARM64)处理......
  • Windows 11 简体中文版、英文版(64-bit、ARM64)下载(2022 年 1 月发布)
    Windows11最新正式版,2021年12月更新作者主页:www.sysin.org全新推出Windows11全新Windows体验,让您与热爱的人和事物离得更近。获得全新视角Windows11提供一个让人平静而富有创意的空间,全新体验引导您全力追逐热爱。从焕然一新的开始菜单,到与您关心的人、关注的消息、游戏......