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版(1)
Oct 09 PHP
海河写的 Discuz论坛帖子调用js的php代码
Aug 23 PHP
ThinkPHP3.1新特性之G方法的使用
Jun 19 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(二)
Jun 23 PHP
PHP验证信用卡卡号是否正确函数
May 27 PHP
总结对比php中的多种序列化
Aug 28 PHP
PHP实现加密文本文件并限制特定页面的存取的效果
Oct 21 PHP
总结的一些PHP开发中的tips(必看篇)
Mar 24 PHP
详解PHP使用Redis存储session时的一个Warning定位
Jul 05 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
Jun 16 PHP
PHP中md5()函数的用法讲解
Mar 30 PHP
php多进程应用场景实例详解
Jul 22 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
关于时间计算的结总
2006/12/06 PHP
PHP中模拟链表和链表的基本操作示例
2016/02/27 PHP
windows7配置Nginx+php+mysql的详细教程
2016/09/04 PHP
利用javascript中的call实现继承
2007/01/22 Javascript
js中的escape及unescape函数的php实现代码
2007/09/04 Javascript
JavaScript 动态添加表格行 使用模板、标记
2009/10/24 Javascript
JS复制到剪贴板示例代码
2013/10/30 Javascript
AMD异步模块定义介绍和Require.js中使用jQuery及jQuery插件的方法
2014/06/06 Javascript
jQuery ajax调用WCF服务实例
2014/07/16 Javascript
jquery常用操作小结
2014/07/21 Javascript
ECMAScript6中Map/WeakMap详解
2015/06/12 Javascript
Angular的模块化(代码分享)
2016/12/26 Javascript
Bootstrap输入框组件简单实现代码
2017/03/06 Javascript
Vue单页面应用保证F5强刷不清空数据的解决方案
2018/01/31 Javascript
Android 自定义view仿微信相机单击拍照长按录视频按钮
2019/07/19 Javascript
利用layer实现表单完美验证的方法
2019/09/26 Javascript
基于JavaScript实现表格隔行换色
2020/05/08 Javascript
JS实现canvas简单小画板功能
2020/06/23 Javascript
Windows下PyMongo下载及安装教程
2015/04/27 Python
python通过微信发送邮件实现电脑关机
2018/06/20 Python
django进阶之cookie和session的使用示例
2018/08/17 Python
pycharm+PyQt5+python最新开发环境配置(踩坑)
2019/02/11 Python
详解用python自制微信机器人,定时发送天气预报
2019/03/25 Python
python字典嵌套字典的情况下找到某个key的value详解
2019/07/10 Python
python django下载大的csv文件实现方法分析
2019/07/19 Python
html5记忆翻牌游戏实现思路及代码
2013/07/25 HTML / CSS
Clarks其乐鞋荷兰官网:Clarks荷兰
2019/07/05 全球购物
The North Face北面荷兰官网:美国著名户外品牌
2019/10/16 全球购物
AssertionError 跟一下那个类是 “is – a”的关系
2012/02/21 面试题
学雷锋演讲稿汇总
2014/05/10 职场文书
法律专业求职信
2014/05/24 职场文书
销售口号大全
2014/06/11 职场文书
企业优秀团员事迹材料
2014/08/20 职场文书
教师学习中国梦心得体会
2016/01/05 职场文书
Go语言并发编程 sync.Once
2021/10/16 Golang
《吸血鬼:避世 血猎》官宣4.27发售 系列首款大逃杀
2022/04/03 其他游戏