首页 > 其他分享 >js下载远程图片

js下载远程图片

时间:2023-02-19 10:32:32浏览次数:56  
标签:const string res js blob file 远程 下载


a标签的download属性无法下载远程图片 可以将图片转换成 blob 然后下载

<a href="https://xxxx.xxx/xxxx.png" download="xxx.png"> 下载 </a>

转换blob下载

/**
* blob文件下载
* @param {Blob} blob
* @param {string} fileName
* @return {*} void
*/
export const downloadBlob = (blob: Blob, fileName: string) => {
const url = URL.createObjectURL(blob);
const a = document.createElement("a");
a.href = url;
a.download = fileName;
a.click();
URL.revokeObjectURL(url);
};

fetch("image url")
.then(res => res.blob())
.then(res => downloadBlob(res, file));

体验地址 我的网站 欢迎来访
​​​http://hongbin.xyz/sourceSquare​


相关代码

/**
* 获取文件拓展名 123.png -> .png | ""
* @param {string} path
* @return {string} ext
*/
export const getExt = (path: string): string => {
const split = path.match(/\w+(\.\w+)$/);
return split ? split[1] : "";
};

/**
* 常见的图片后缀名数组
*/
export const imageExt = [".gif", ".png", ".jpg", ".jpeg", ".avif", ".webp"];

react中使用 像 .apk等其他文件可以下载 可以区分后缀名决定是否转换blob下载

return <>
{imageExt.includes(getExt(file)) ? (
<span
onClick={() => {
fetch(`${downloadSourcePath}${file}`)
.then(res => res.blob())
.then(res => downloadBlob(res, file));
}}
>
下载
</span>
) : (
<a href={`${downloadSourcePath}${file}`} download={file}>
下载
</a>
)}
</>


标签:const,string,res,js,blob,file,远程,下载
From: https://blog.51cto.com/u_15964288/6066505

相关文章

  • egg.js. demo
    丑团git前端expo​​​https://gitee.com/honbingitee/ugly-tuan-expo​​​后端egg.js​​https://gitee.com/honbingitee/ugly-tuan-egg​​/*eslint-disableinde......
  • NodeJS安装(Mac版本)
    nvm,node,npm之间的区别nvm:nodejs版本管理工具。也就是说:一个nvm可以管理很多node版本和npm版本。nodejs:在项目开发时的所需要的代码库npm:nodejs包管理工具。......
  • [State Machine] Zag-js
    import{createMachine}from"@zag-js/core";typeMachineState={value:"idle"|"focused";};typeMachineContext={value:string[];focusedIndex......
  • 【JS 】SharedWorker 优化前端轮询请求(续)
    1.书接上回【JS】SharedWorker优化前端轮询请求经过一顿改造,性能是上去了,但是代码却还是不够简洁,所以继续封装2.思路目标:使用一个js文件完成所有轮询请求,封装调用......
  • 【JS 】SharedWorker 优化前端轮询请求
    1.背景目前公司系统首页存在一个定时的轮询请求/Admin/Dashboard/GetAppRelaseNotice,包含一些需要实时反映在前端的操作(如:页面版本,站内信,页面配置更新等)问题很明显,单......
  • 如何远程SSH到Windows内部的虚拟机?
    1.背景我学校有一台Windows电脑(x@a.b.c.d),里面安装了一个Ubuntu虚拟机(用户名为y),虚拟机里连着VPN。并且虚拟机的22端口映射到了主机的22端口。通过这个VPN我可以访问另......
  • 为了实现客服系统关键词分隔符切分,封装js实现根据多个分隔符分隔字符串为数组
    需求用户可以设置关键词回复,默认是以英文逗号分隔,但是很多人会打成中文逗号,需要能兼容处理解决为了实现客服系统关键词分隔符切分,封装js实现根据多个分隔符分隔字符串为......
  • Win10使用远程桌面连接访问服务器,提示 出现身份验证错误,要求的函数不受支持
      解决方案:1.win+R打开运行窗口,输入gpedit.msc   2.依次展开计算机配置=>管理模板=>系统=>凭据分配   3.双击加密数据库修正   ......
  • 从零入门Vue.js!六步学习路线和知识体系盘点详解!
    Vue.js是一款流行的JavaScript前端框架,它允许开发者轻松地构建交互性强的用户界面。学习这个阶段的时候有一定门槛,并不是属于零基础就能入门学习的,在学习vue.js的时候可以......
  • 【JS】简单复习及ES6
    一、JavaScript基础及ES6视频链接:https://www.bilibili.com/video/BV1Y84y1L7Nn 10.变量的声明var与let首先说结论,放弃var,使用let。let为了解决var的一些......