如何通过a链接实现图片下载
本文转载自:萧萧寒 http://www.xiaoxiaohan.com/php/3.html
需求
在做项目的过程中,产品那边出于用户体验方面的考虑提出如下需求:用户通过点击一个按钮,直接弹出浏览器的下载保存窗口供用户下载自己的推广二维码。
当这个需求传达到技术部的时候,笔者第一个想到的方法就是通过a链接实现,因为网站的下载操作多数都是通过a链接实现的。
测试一:给a链接一张图片的绝对路径
试着把自己的代码编写到网页中并用浏览器打开,尝试了多个不同的浏览器,结果出其的一致:点击a链接之后出现的是图片预览,而不是期望中的下载保存窗口。
测试二:给a链接一张图片的相对路径
再次把自己的代码编写到网页中并用浏览器打开,同样尝试了多个不同的浏览器,和测试一不同的是:点击a链接之后火狐和谷歌浏览器可以直接弹出浏览器的下载保存窗口,而其它的一些浏览器如:IE、Safari等则是实现图片预览。
对于这样的结果,让人有点意外。网上搜索得知:浏览器会通过头信息进行判断,一旦没有找到头信息浏览器则根据自己的既定规则进行解析。如果浏览器能识别该文件,则会以相应的方式显示该文件;如果浏览器不能识别该文件,则会弹出下载保存窗口供用户进行下载保存。
为了达到浏览器兼容的目的,结合网站后台使用的语言,最终决定借助PHP实现,代码如下:
<?php$file = $_GET['file'];header('Content-type: octet/stream');header('Content-disposition: attachment; filename='.$file.';');header('Content-Length: '.filesize($file));readfile($file);exit;?>
将上面这段代码粘贴到新建的PHP文件中保存并命名为download.php以供HTML页面使用。然后,我们就可以在HTML代码中调用这个PHP文件实现点击a链接下载图片的操作了。
HTML代码如下:
<a href="download.php?file=demo.jpg">点击下载</a>
可以试试:点击下载
特别提醒:
1、写HTML代码的时候,一定要注意PHP文件的路径并保证你的服务器能够解析PHP文件;
2、建议下载路径采用相对路径,这样可以保证图片名字的初始化,使用绝对路径可能会出现图片下载完成后打不开等情况。
对于a链接直接引用图片相对路径和绝对路径点击之后浏览器表现不一致,笔者不是很了解其中的原委。如果你知道,欢迎留言解惑。
如何通过a链接实现图片下载相关推荐
- metabase 以链接或图片查看_Python下载微信公众号文章内的图片
刚刚说过使用python下载微信公众号文章内的视频,有兴趣的同学可以查看上一篇文章,此处就不放文章的链接了. 下面我们继续说一下,如何提取微信公众号文章内的图片并进行下载,下面一起来看一下. 01目标 ...
- 关于图片下载报链接不安全的问题,SSL证书信任相关
自定义TrustAllCerts 类实现X509TrustManager 接口,同时对外提供createSSLSocketFactory的方法,自定义TrustAllHostnameVerifier ...
- js前端根据链接生成二维码并转成图片下载
js前端根据链接生成二维码并转成图片下载 依赖于jquery.jquery.qrcode.min.js 1.html <div class="qrcode"></ ...
- 无需代码即可实现Excel中图片链接的批量下载
今天在使用腾讯文档收集截图时,发现导出的Excel表格中是一列图片链接,不能直观的看到上传的图片,上网找了很多方法,但大多数是通过敲代码的形式来实现图片链接的批量下载的,对于编程不厉害的我来说,实现起 ...
- android picasso源码下载,Picasso:一个专为Android制作的强大的图片下载和缓存库
Picasso:一个专为Android打造的强大的图片下载和缓存库 简介 在Android应用中,图片消费了大量的资源,却为应用提供了很好的视觉体验.幸运的是,Picasso为你的应用提供了非常容易的 ...
- Node.js制作图片下载爬虫的一般步骤
图片下载爬虫分两部分:爬页面和下载图片. 爬页面时先看网址是https还是http的,然后选择不同的内置对象:其次看编码,如果是charset=gb2312的网页就需要iconv帮忙转码,好在大部分都 ...
- Scrapy学习篇(九)之文件与图片下载
Media Pipeline Scrapy为下载item中包含的文件(比如在爬取到产品时,同时也想保存对应的图片)提供了一个可重用的 item pipelines . 这些pipeline有些共同的方 ...
- Python—实训day4—爬虫案例3:贴吧图片下载
6 xpath 首先需要安装Google的Chrome浏览器 6.1 安装xpath插件 把 xpath_helper_2_0_2.crx 修改后缀名为 xpath_helper_2_0_2.rar. ...
- Google TakeOut图片下载器
目录 介绍 背景 使用应用程序 关于源代码 下载管理器 使用下载管理器 内部下载管理器 StartDownload()函数 TraverseFolderTree函数 RetrieveImage函数 I ...
- python 下载图片到内存卡_python-23:将图片下载到本地
python-23 :将图片下载到本地 得到图片的网址之后我么你怎么将图片下载到本地 呢? 在 python 中我们使用 urllib 库里面的 urllib.urlretrieve() 函 数 又是 ...
最新文章
- 【青少年编程】黄羽恒:我要背单词
- markdown简明语法
- mac -- 安装OpenCV
- [高数][高昆轮][高等数学上][第二章-导数与微分]01.导数的定义
- 设计模式学习(十六) 模板方法模式
- python获取字典的值_Python:如何从pandas系列中获取字典中的值
- java中字符 的含义 有什么作用_Java中字符串常见题之String相关讲解
- (二)原生JS实现 - 事件类方法
- win7 nginx php 环境,win7下docker环境搭建nginx+php-fpm+easyswoole+lavarel开发环境
- nginx redis mysql_Nginx + Lua + Kafka + Redis + Mysql
- Leetcode刷题系列汇总
- andriod 自定义来电界面功能
- android截长屏后保存
- Win7 安装VS2005时 Dexplore安装失败的解决方法
- 百度地图点击出现圆圈
- 【开箱即用】HTML5教程
- 计算机定时开机关机设置,怎样设置电脑定时开机关机
- HDU 4238 区间dp
- reco-fetch
- ubuntu中firebox无法联网