基本 实现就是在前台页面=用户每点击下载一次,下载次数就加1,并下载相应的文件到本地.

需要的html代码

 <div id="demo"> <ul class="filelist"> </ul> 

html代码中内容,到时候需要用ajax从后台获取在显示出来。

需要的jquery代码

    $.ajax({ type: 'GET', url: 'filelist.php', dataType: 'json', cache: false, beforeSend: function(){ $(".filelist").html("<li class='load'>正在载入...</li>"); }, success: function(json){ if(json){ var li = ''; $.each(json,function(index,array){ li = li + '<li><a href="download.php?id='+array['id']+'">'+array['file']+
'<span class="downcount" title="下载次数">'+array['downloads']+'</span> <span class="download">点击下载</span></a></li>'; }); $(".filelist").html(li); } } }); $('ul.filelist a').live('click',function(){ var count = $('.downcount',this); count.text( parseInt(count.text())+1); });
}); 

这里就是实现了,ajax返回前,先在页面上呈现正在载入的字样,请求成功后,循环将json中的数据赋值到页面,

这里给<a>元素增加了一个点击事件,每次用户点击相应文档时,直接将文档下载次数加1了,不是从用ajax从数据库取值的,这里

只要给用户一个视觉就可以了。

需要的样式

#demo{width:728px;margin:50px auto;padding:10px;border:1px solid #ddd;background-color:#eee;}
ul.filelist li{background:url("img/bg_gradient.gif") repeat-x center bottom #F5F5F5;
border:1px solid #ddd;border-top-color:#fff;list-style:none;position:relative;}
ul.filelist li.load{background:url("img/ajax_load.gif") no-repeat; padding-left:20px;
border:none; position:relative; left:150px; top:30px; width:200px}
ul.filelist li a{display:block;padding:8px;}
ul.filelist li a:hover .download{display:block;}
span.download{background-color:#64b126;border:1px solid #4e9416;color:white;
display:none;font-size:12px;padding:2px 4px;position:absolute;right:8px;
text-decoration:none;text-shadow:0 0 1px #315d0d;top:6px;
-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;}
span.downcount{color:#999;padding:5px;position:absolute; margin-left:10px;text-decoration:none;}

剩下的是两个php文件,

一个是读文档数据库取内容返回给ajax的文件

 $query = 'set names utf8';mysqli_query($db,$query);$query  = 'select * from filelist';$result = mysqli_query($db,$query);if( mysqli_num_rows($result) ){while( $row = mysqli_fetch_assoc($result) ){$data[] = array('id' => $row['id'],'file' => $row['filename'],   'downloads' => $row['downloads']);}echo json_encode($data);}

还有一个是点击时,实现下载的php文件

if(!isset($id) || $id==0) die('id不存在!');
$query = mysqli_query($db,"select * from filelist where id='$id'");
$row = mysqli_fetch_array($query);
if(!$row) exit;
$filename = iconv('UTF-8','gb2312',$row['filename']);
$savename = $row['savename'];
$sevefile = $path.$savename;
if(file_exists($sevefile)){//文件存在//下载次数加1mysqli_query($db,"update filelist set downloads=downloads+1 where id='$id'"); //打开文件$file = @ fopen($sevefile, "r"); $file_size=filesize($sevefile); header("content_type:application/octet_stream");header("Accept-Ranges:bytes");header("Accept-length:".$file_size);header("content-Disposition:attachment;filename=".$filename);$buffer = 1024;while(!feof($file)){$file_data = fread($file,$buffer);echo $file_data;}fclose($file); exit;
}else{ echo '文件不存在';
} 

调用iconv进行中文编码转换时因为数据库中的读出来的中文是utf-8编码的,win默认是gb2312编码

这里将一个文件在客户端和服务器存的名字写的不一样是因为在服务器上为了防止文件名重复或者中文乱码的问题,所以一般都是以日期命名。

需要注意的一点是,echo $file_data的时候 上下文中一定不要在echo其他的内容,否则会造成下载的文件有损坏的问题。

jquery,php实现文件下载和统计下载次数相关推荐

  1. PHP怎么统计下载次数(下载量代码)

    php中统计下载次数,其实就是下载文件时,链接指向某个php页面,该页面计数后,再向浏览器返回相应的文件地址.只有单击该链接时,才进行计数,打开网页不计数.其实也可以理解为网页计数器,就是打开文件下载 ...

  2. php 统计下载次数,Dedecms下载次数真实统计的实现方法

    Dedecms的软件模型,大家都知道,可能用到的人不多,因为一些专业的下载网站都在使用新云等专用下载系统,其实dedecms的软件模型还是不错的,并且有诸多好处,例如和文章系统共用一个后台,二级域名绑 ...

  3. 无广告托管应用,免费的应用分发平台,提供下载次数等数据统计,Android、ios应用合并,一个二维码搞定

    前言 省去自建服务器的麻烦,并且提供了下载次数等数据统计,可以随时查看历史版本,一个二维码搞定Android和ios,扫码时可根据机型自动识别,给开发者提供很大便利,不仅免费而且操作非常的简单. 1. ...

  4. 浏览器下载文件时一共发送2次请求,如何把“下载次数”只记录为1次?

    最近,个人官网实现了PDF下载功能,出于统计的考虑,增加了"下载次数"download_count这个字段. 但是,我今天突然发现,每次下载download_count都直接+2了 ...

  5. 在Excel中标示重复值、删除重复值、统计重复次数

    在Excel中标示重复值.删除重复值.统计重复次数等等,视频演示: 以上方法在Excel和WPS中通用. E灵插件下载: https://www.excelbbx.net/download.htm

  6. csdn查看自己所有资源被下载次数

    csdn查看自己所有资源被下载次数 正文开始 不想看 太多的可以直接先登录后 点击查看资源被下载次数明细 https://download-console-api.csdn.net/v1/user/s ...

  7. “jQuery风暴” 推荐及配套代码下载

    近一年没有更新博客. 这一年我进行了我的第一次跳槽和转型. 从架构到一名前端开发, 这个转型是纠结的.现在我是百度的一名前端开发工程师.     "从零学习jQuery"系列教程收 ...

  8. java常用的统计_(OJ)Java常用类-统计数字次数

    统计数字次数 Problem Description 命令行输入一个由数字组成的任意字符串,统计出每个数字出现的次数. Input Description 1239586838 Output Desc ...

  9. java+txt+词语+次数_Java练习2--读取txt文件统计考勤次数并写入一个txt文件中

    Java练习2--读取txt文件统计考勤次数并写入一个txt文件中 Java练习2--读取txt文件统计考勤次数并写入一个txt文件中 面向对象的小练习: 文件attendance.txt中的数据为本 ...

最新文章

  1. Flask出现Error code 400, message Bad request syntax异常
  2. 多线程控制不同的线程取不同的数据的问题
  3. php rinit,PHP执行原理
  4. 分子结构模拟工具UCSF Chimera的安装及基本操作
  5. lombak-插件使用
  6. 行转列经典案例(left join)
  7. HibernateCRUD基础框架(1)-实体类
  8. 研究生信息管理系统(C++实现)
  9. Java的新项目学成在线笔记-day14(二)
  10. Android实现断点下载功能
  11. 微信推送封面尺寸_微信公众号文章封面图尺寸是多少?如何快速制作封面图?...
  12. 小区物业专属公众号管理办法
  13. MySQL知识点整理汇总
  14. c++面试 掌握的东西总结
  15. CSA创建用户以及组、管理用户密码、简单用户身份切换
  16. 陈春章数字集成电路物理设计阅读笔记
  17. 愚人节导入_您是否发现了这些愚人节愚人节的插科打??
  18. andriod驱动之旅-在Ubuntu上为Android系统内置Java应用程序测试Application Frameworks层的硬件服务(8)
  19. 低代码平台有哪些?织信informat怎么样?
  20. 飞塔防火墙配置2条网络链路分流

热门文章

  1. 科技服务:当共享单车成为免费使用
  2. 简单有趣,半小时漫画中国史
  3. 飞速创软 | 带你深入了解Iass、Pass、Sass三种云服务的区别
  4. 中缀表达式转后缀表达式两位数_什么是圆形磁动势?永磁无刷电机是怎么转起来的?...
  5. Python入门100例(三)
  6. google 学术一直 sorry 怎么办?
  7. 【代码审计】--- php代码审计方法
  8. Xshell的使用方法(初学者)
  9. 你见过的最全面的Python重点(附代码演示)
  10. 计算机网络技术的就业前景