a标签点击浏览器下载图片,不打开

网上好多给a标签加download属性的,但都不好使。

<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>Document</title>

	<style type="text/css">
		.box{border: 1px solid black;padding:0 10px;}
		img{width:200px;}
	</style>
	</head>
	<body>
		
    <!--创建一个cavas  用来存放图片
        <canvas  id="cavasimg" width="607" height="367"  ></canvas> -->
		<img src="timg.jpg" id="cavasimg">
        
	<!--声明一个按钮  用来触发下载图片到本地-->
        <input type="button" id="btnsavaImg" value="保存图片到本地" onclick="downloadIamge('img','timg.jpg')"/>   

<script>
// 调用方式
// 参数一: 选择器,代表img标签
// 参数二: 图片名称,可选
function downloadIamge(selector, name) {
    var image = new Image()
    // 解决跨域 Canvas 污染问题 解决跨域问题-并不好使,需要改对应的请求服务器
    image.setAttribute('crossOrigin', 'anonymous')
    image.onload = function () {
		var canvas = document.createElement('canvas')
		canvas.width = image.width
		canvas.height = image.height

		var context = canvas.getContext('2d')
		context.drawImage(image, 0, 0, image.width, image.height)
		var url = canvas.toDataURL('image/png')

		// 生成一个a元素
		var a = document.createElement('a')
		// 创建一个单击事件
		var event = new MouseEvent('click')

		// 将a的download属性设置为我们想要下载的图片名称,若name不存在则使用‘下载图片名称’作为默认名称
		a.download = name || '下载图片名称'
		// 将生成的URL设置为a.href属性
		a.href = url

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

	image.src = document.querySelector(selector).src
}

</script>
	</body>

效果图:

注意需要在tomcat或其它服务器上运行才能下载,直接在浏览器访问html不能下载。
参考网址https://www.cnblogs.com/zhangkaiqiang/p/8183926.html

转载于:https://my.oschina.net/u/2301293/blog/3002154

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值