正常可以用a链接+download属性(只支持同源文件,非同源会直接打开不会下载)
但是。图片类的会直接打开这张图片,不是下载图片。
解决方法:canvas转base64后下载
```
<a class="download" v-for="(x,index) in content.content_info.download" :key="index" :href="gethref(x.file_url)" :download="x.file_url" @click="downloadImg(x)"> </a>
downloadImg(data){//下载图片
var reg = new RegExp(/(.png|.jpg|.jpeg|.gif)/g, 'i');
if(data && data.file_name && data.file_name.match(reg) && data.file_name.match(reg).length>0){
// 图片转base64地址
var fixtype = function () {
var r = data.file_name.match(reg);
return 'image/' + r;
}
var images = new Image();
var canvas = document.createElement('canvas');
var context = canvas.getContext('2d');
images.crossOrigin = 'anonymous';
images.src = data.file_url
images.onload=function(){
var _w = images.naturalWidth;
var _h = images.naturalHeight;
canvas.width = _w
canvas.height = _h
context.drawImage(images,0,0);
var a = document.createElement('a');
a.href = canvas.toDataURL(fixtype()); //将画布内的信息导出为png图片数据
a.download = data.file_name; //设定下载名称
a.click(); //点击触发下载
}
}
},
gethref(url){//根据url判断是否是图片。如果是图片,给a的href设置成“javascript:void(0)”
var reg = new RegExp(/(.png|.jpg|.jpeg|.gif)/g, 'i');
if(url && url.match(reg) && url.match(reg).length>0){
return 'javascript:void(0)';
}else{
return url;
}
}
```
下载文本
```
var iframe = null;
var iframedoc = null;
if (document.all){//IE
iframe = document.frames["iframe"];
iframedoc = document.frames["iframe"].document;
}else{//Firefox
iframe = document.getElementById("iframe");
iframedoc = document.getElementById("iframe").contentDocument;
}
var url = 'http://pbp38mcp7.bkt.clouddn.com/15441697177232.py';
if (!iframe) return;
iframe.url = url;
var filename = 'hello.py'
var a = document.createElement('a')
var blob = new Blob([iframe.contentWindow.document.body.innerHtml])
a.download = filename
a.href = URL.createObjectURL(blob)
a.click()
URL.revokeObjectURL(blob)
```
- CSS
- 长度单位
- 问题们
- 背景渐变
- 禁止用户选中
- 给富文本重置样式
- 移动端常见小问题
- bfc
- flex
- 父元素没有包裹子元素的margin
- VUE
- 原理
- 生命周期
- vue-router原理
- 动态修改路由参数
- 在新窗口打开页面
- 连跳两个页面
- 跳转页面自动回到顶部
- vue+webpack项目,停留一段时间报错
- vue 路由去掉#
- webpack编译目录设置
- config配置
- HTTP
- HTTP状态码
- HTTP1.0,HTTP1.1,HTTP2.0
- axios和ajax的区别
- 模块化
- git
- 比较
- 查看远程仓库地址
- git flow
- 比较分支的不同并保存压缩文件
- Tag
- 回退
- node版本管理
- npm
- 确定用户是否在当前页面
- 前端下载文件
- 只能在微信中访问
- 下载图片
- webpack修改路径为相对路径
- 打开新页面-被浏览器拦截
- textarea高度随内容变化
- Debian/Ubuntu 安装shadowsock
- 垂直居中
- video
- 去掉ios原始播放大按钮
- 前端直播
- ios系列
- js弹出错误代码
- nginx在MAC上的安装、启动、重启和关闭
- 解析latex格式的数学公式
- Mac 新建unix可执行文件
- 正则-格式化a链接
- 原型
- unicode解析
- vue+webpack打包优化
- 各种JS题
- ES6
- seo
- React
- 兼容性
- canvas
- zsh