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 相关文章推荐
第十二节--类的自动加载
Nov 16 PHP
PHP MySQL应用中使用XOR运算加密算法分享
Aug 28 PHP
destoon整合ucenter后注册页面不跳转的解决方法
Jun 21 PHP
codeigniter中实现一次性加载多个view的方法
Mar 20 PHP
php实现通过cookie换肤的方法
Jul 13 PHP
PHPExcel笔记, mpdf导出
May 03 PHP
PHP的时间戳与具体时间转化的简单实现
Jun 13 PHP
Laravel框架中Blade模板的用法示例
Aug 30 PHP
Laravel框架使用Seeder实现自动填充数据功能
Jun 13 PHP
ThinkPHP框架结合Ajax实现用户名校验功能示例
Jul 03 PHP
php学习笔记之字符串常见操作总结
Jul 16 PHP
php设计模式之职责链模式定义与用法经典示例
Sep 19 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
dedecms中显示数字验证码的修改方法
2007/03/21 PHP
php Calender(日历)代码分享
2014/01/03 PHP
phpmailer绑定邮箱的实现方法
2016/12/01 PHP
PHP Redis扩展无法加载的问题解决方法
2019/08/22 PHP
javascript之大字符串的连接的StringBuffer 类
2007/05/08 Javascript
模仿百度三维地图的js数据分享
2011/05/12 Javascript
jquery post方式传递多个参数值后台以数组的方式进行接收
2013/01/11 Javascript
javascript检测对象中是否存在某个属性判断方法小结
2013/05/19 Javascript
解析ScrollPic在ie8下只滚动一遍,然后变为空白 ie6,ie7,chrome,firefox正常
2013/06/26 Javascript
jquery实现手机号码选号的方法
2015/07/31 Javascript
jQuery Mobile操作HTML5的常用函数总结
2016/05/17 Javascript
基于jQuery实现点击列表加载更多效果
2016/05/31 Javascript
iview给radio按钮组件加点击事件的实例
2017/09/30 Javascript
nodejs aes 加解密实例
2018/10/10 NodeJs
这样回答继承可能面试官更满意
2019/12/10 Javascript
javascript设计模式 ? 中介者模式原理与用法实例分析
2020/04/20 Javascript
JS如何监听div的resize事件详解
2020/12/03 Javascript
[00:08]DOTA2勇士令状等级奖励“天外飞星”
2019/05/24 DOTA
在Django的视图中使用数据库查询的方法
2015/07/16 Python
使用python调用zxing库生成二维码图片详解
2017/01/10 Python
python实现快速排序的示例(二分法思想)
2018/03/12 Python
Python之inspect模块实现获取加载模块路径的方法
2018/10/16 Python
python用列表生成式写嵌套循环的方法
2018/11/08 Python
Python可迭代对象操作示例
2019/05/07 Python
PyCharm 创建指定版本的 Django(超详图解教程)
2019/06/18 Python
基于matplotlib xticks用法详解
2020/04/16 Python
python json.dumps() json.dump()的区别详解
2020/07/14 Python
python中openpyxl和xlsxwriter对Excel的操作方法
2021/03/01 Python
html5 canvas的绘制文本自动换行的示例代码
2018/09/17 HTML / CSS
信息管理员岗位职责
2013/12/01 职场文书
迎新晚会邀请函
2014/02/01 职场文书
学校社会实践活动总结
2014/07/03 职场文书
社区文艺活动方案
2014/08/19 职场文书
2015年乡镇统计工作总结
2015/04/22 职场文书
运动会表扬稿范文
2015/05/05 职场文书
浅析InnoDB索引结构
2021/04/05 MySQL