PHP,js,apache,h5等多种方式实现图片下载功能

本文介绍了使用PHP、JavaScript和Apache配置实现图片下载功能的方法。通过PHP,利用header函数设置响应头实现下载;JavaScript借助HTML5特性在非IE浏览器下创建下载链接;Apache通过配置FilesMatch和Header指令,实现对特定图片格式的强制下载。各种方式各有优劣,Apache配置简单且兼容性好,JavaScript的a标签方便但不支持IE。
摘要由CSDN通过智能技术生成


最近做了一个简单的小项目http://ganen.medlive.cn/


这算是我学了php一个月以来第一次把自己学到的知识付诸实践,虽然有不少功能都是杜神写的,但是我还是做了一些简单的贡献。


在实现了生成海报的功能之后,接下来还有三个功能等待实现。

由于微信分享和新浪微博的分享已经做过了,并且可以使用,所以我就先做了下载图片的功能。



关于下载图片的功能,其实有多种方式实现。

先将比较复杂的PHP实现的方法。

PHP实现下载方式,基本上是浏览器发送一个请求,请求访问服务器中某个脚本,比如download.php。然后执行该文件的代码实现下载。

如图


而在浏览器运行待下载的文件的时候,必然要把待下载的文件读入内存中,这里通过fopen()函数完成该动作,接下来就是从内存中读取文件,通过fread()函数完成该动作。

有一点可能需要注意,就是如果文件比较大。文件通常会分成多段返回给客户端,并不是等文件在服务端全部读取完毕后,一次性返回给客户端,因为这样子会增加服务器的符合。所以我们需要在php代码中设置一次读取的字节数,比如我在下面的代码中通过$buffer=1024设置一次读取的字节数,没读取一次,就输出数据(即返回给浏览器)


比如。。

<form class="J_form_download" method="post" action="download.php">
	<input name="url" value="" type="hidden">
</form>

用js可以实现对这么form的控制,当我利用js实现form的提交操作,那么就是寻找并执行这个download.php文件。

这个时候就可以把你想用download.php实现你想要的下载的功能。具体怎么实现的看下面这段代码:

<?php
 
/**
 * 文件下载
 *
**/
header("Content-type:text/html;charset=utf-8");
download('web/magento-1.8.1.0.zip', 'magento下载');
function download($file, $down_name){
 $suffix = substr($file,strrpos($file,'.')); //获取文件后缀
 $down_name = $down_name.$suffix; //新文件名,就是下载后的名字
 //判断给定的文件存在与否 
 if(!file_exists($file)){
  die("您要下载的文件已不存在,可能是被删除");
 } 
 $fp = fopen($file,"r");
 $file_size = filesize($file);
 //下载文件需要用到的头
 header("Content-typ
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值