php用户下载次数,PHP开发实现下载次数统计功能模块(二)

创建download.php文件,用来响应下载动作,更新对应文件的下载次数,并且通过浏览器完成下载。

根据url传参,查询得到对应的数据,检测要下载的文件是否存在,如果存在,则更新对应数据的下载次数+1,数据库中的文件下载次数+1,并且使用header()实现下载功能。如果文件不存在,则输出“文件不存在!”。

值得一提的是,使用header()函数,强制下载文件,并且可以设置下载后保存到本地的文件名称。

一般情况下,我们通过后台上传程序会将上传的文件重命名后保存到服务器上,常见的有以日期时间命名的文件,这样的好处之一就是避免了文件名重复和中文名称乱码的情况。而我们下载到本地的文件可以使用header("Content-Disposition: attachment; filename=" .$filename )将文件名设置为易于识别的文件名称。<?php

require('conn.php');

$id = (int)$_GET['id'];

if(!isset($id) || $id==0) die('参数错误!');

$query = mysqli_query($link,"select * from downloads where id='$id'");

$row = mysqli_fetch_array($query);

if(!$row) exit;

$filename = iconv('UTF-8','GBK',$row['filename']);//中文名称注意转换编码

$savename = $row['savename']; //实际在服务器上的保存名称

$myfile = 'files/'.$savename;  //文件名称

if(file_exists($myfile)){

mysqli_query($link,"update downloads set downloads=downloads+1 where id='$id'");

$file = @fopen($myfile, "r");

header("Content-type: application/octet-stream");

header("Content-Disposition: attachment; filename=" .$filename );

while (!feof($file)) {

echo fread($file, 50000);  //打开文件最大字节数为50000

}

fclose($file);

exit;

}else{

echo '文件不存在!';

}

?>

注释:

iconv函数库能够完成各种字符集间的转换,是php编程中不可缺少的基础函数库。

file_exists()函数检查文件或目录是否存在。如果指定的文件或目录存在则返回 true,否则返回 false。

fopen() 函数打开文件或者 URL。如果打开失败,本函数返回 FALSE。“r”只读方式打开,将文件指针指向文件头。

feof()函数检测是否已到达文件末尾 (eof)。

fread()函数读取文件(可安全用于二进制文件)。

fclose()函数关闭一个打开文件。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值