php+js实现的无刷新下载文件功能示例


Posted in PHP onAugust 23, 2019

本文实例讲述了php+js实现的无刷新下载文件功能。分享给大家供大家参考,具体如下:

服务器端页面

步骤就是,设置头文件参数,然后读入并输出文件。下面代码的file_get_contents可以使用fread,fclose代替。

download.php

<?php
$filename = $_GET['filename'];
$path = __DIR__."/file/".$filename;
Header( "Content-type: application/octet-stream");
Header( "Accept-Ranges: bytes ");
Header( "Accept-Length: " .filesize($filename));
header( "Content-Disposition: attachment; filename={$filename}");
echo file_get_contents($filename);

前端页面

在很多时候,我们下载文件的操作,都是在前端页面直接点击下载的,而不是专门跳转到上面的download.php去下载。

所以我们需要在前端实现无刷新访问download.php来下载文件,通过隐藏的iframe来实现是不错的方式。下面是代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
<a href="javascript:download_file('http://localhost/download.php?filename=\" rel="external nofollow" 测试文件.doc\"')">下载</a>
<script type="text/javascript">
  function download_file(url)
  {
    if (typeof (download_file.iframe) == "undefined")
    {
      var iframe = document.createElement("iframe");
      download_file.iframe = iframe;
      document.body.appendChild(download_file.iframe);
    }
    //alert(download_file.iframe);
    download_file.iframe.src = url;
    download_file.iframe.style.display = "none";
  }
</script>
</body>
</html>

file_get_contents先读取,然后echo的方式。可以使用readfile函数代替,效率更高。

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
PHP与SQL注入攻击[一]
Apr 17 PHP
PHP学习之整理字符串
Apr 17 PHP
浅谈php中mysql与mysqli的区别分析
Jun 10 PHP
PHP检测移动设备类mobile detection使用实例
Apr 14 PHP
ThinkPHP中关联查询实例
Dec 02 PHP
PHP入门教程之使用Mysqli操作数据库的方法(连接,查询,事务回滚等)
Sep 11 PHP
php实现当前页面点击下载文件的简单方法
Sep 22 PHP
php中让人头疼的浮点数运算分析
Oct 10 PHP
php基于curl实现随机ip地址抓取内容的方法
Oct 11 PHP
PHP+Ajax 检测网络是否正常实例详解
Dec 16 PHP
PHP中使用mpdf 导出PDF文件的实现方法
Oct 22 PHP
PHP实现读取文件夹及批量重命名文件操作示例
Apr 15 PHP
php简单检测404页面的方法示例
Aug 23 #PHP
PHP Redis扩展无法加载的问题解决方法
Aug 22 #PHP
PHP Primary script unknown 解决方法总结
Aug 22 #PHP
php用wangeditor3实现图片上传功能
Aug 22 #PHP
PHP生成zip压缩包的常用方法示例
Aug 22 #PHP
Laravel 实现数据软删除功能
Aug 21 #PHP
PHP针对redis常用操作实例详解
Aug 17 #PHP
You might like
Protoss建筑一览
2020/03/14 星际争霸
php中修改浏览器的User-Agent来伪装你的浏览器和操作系统
2011/07/29 PHP
如何使用Linux的Crontab定时执行PHP脚本的方法
2011/12/19 PHP
php htmlspecialchars()与shtmlspecialchars()函数的深入分析
2013/06/05 PHP
Zend Framework动作助手Url用法详解
2016/03/05 PHP
php metaphone()函数的定义和用法
2016/05/15 PHP
由document.body和document.documentElement想到的
2009/04/13 Javascript
分享一则JavaScript滚动条插件源码
2015/03/03 Javascript
js简单实现点击左右运动的方法
2015/04/10 Javascript
jquery仿百度经验滑动切换浏览效果
2015/04/14 Javascript
JavaScript中数组继承的简单示例
2015/07/29 Javascript
JavaScript的jQuery库中ready方法的学习教程
2015/08/14 Javascript
把json格式的字符串转换成javascript对象或数组的方法总结
2016/11/03 Javascript
JavaScript给每一个li节点绑定点击事件的实现方法
2016/12/01 Javascript
JS鼠标3次点击事件实现代码及扩展思路
2017/09/12 Javascript
React Native使用百度Echarts显示图表的示例代码
2017/11/07 Javascript
JavaScript中set与get方法用法示例
2018/08/15 Javascript
在vue项目中引用Iview的方法
2018/09/14 Javascript
React Component存在的几种形式详解
2018/11/06 Javascript
layui自定义工具栏的方法
2019/09/19 Javascript
[56:38]DOTA2-DPC中国联赛正赛Aster vs Magma BO3 第一场 3月5日
2021/03/11 DOTA
python网络编程学习笔记(二):socket建立网络客户端
2014/06/09 Python
python持久性管理pickle模块详细介绍
2015/02/18 Python
使用Python脚本将Bing的每日图片作为桌面的教程
2015/05/04 Python
python求解水仙花数的方法
2015/05/11 Python
python机器人行走步数问题的解决
2018/01/29 Python
python组合无重复三位数的实例
2018/11/13 Python
使用django实现一个代码发布系统
2019/07/18 Python
使用Python将语音转换为文本的方法
2020/08/10 Python
急诊科护士自我鉴定
2013/10/14 职场文书
cf战队收人广告词
2014/03/14 职场文书
青年志愿者先进事迹
2014/05/06 职场文书
求职信范文怎么写
2015/03/19 职场文书
2015年双拥工作总结
2015/04/08 职场文书
2015年挂职锻炼个人总结
2015/10/22 职场文书
2016年六一儿童节开幕词
2016/03/04 职场文书