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原创论坛
Oct 09 PHP
一个简单计数器的源代码
Oct 09 PHP
解析link_mysql的php版
Jun 30 PHP
关于PHP的curl开启问题探讨
Apr 08 PHP
php中Y2K38的漏洞解决方法实例分析
Sep 22 PHP
php自动识别文字编码并转换为目标编码的方法
Aug 08 PHP
对比PHP对MySQL的缓冲查询和无缓冲查询
Jul 01 PHP
PHP中利用sleep函数实现定时执行功能实现代码
Aug 25 PHP
php正则表达式基本知识与应用详解【经典教程】
Apr 17 PHP
PHP实现下载远程图片保存到本地的方法
Jun 19 PHP
PHP配置ZendOpcache插件加速
Feb 14 PHP
PHP笛卡尔积实现原理及代码实例
Dec 09 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
总集篇&特番节目先行播出!《SAO Alicization War of Underworld》第2季度TV动画4月25日放送!
2020/03/06 日漫
深入理解PHP之数组(遍历顺序)  Laruence原创
2012/06/13 PHP
php异常处理使用示例
2014/02/25 PHP
PHP读取目录树的实现方法分析
2019/03/22 PHP
一个tab标签切换效果代码
2009/03/27 Javascript
jQuery JSON实现无刷新三级联动实例探讨
2013/05/28 Javascript
Jquery 实现图片轮换
2015/01/28 Javascript
基于Vue.js的表格分页组件
2016/05/22 Javascript
原生 JS Ajax,GET和POST 请求实例代码
2016/06/08 Javascript
JS给按钮添加跳转功能类似a标签
2017/05/30 Javascript
微信小程序自定义多选事件的实现代码
2018/05/17 Javascript
JS实现520 表白简单代码
2018/05/21 Javascript
解决vue-cli webpack打包后加载资源的路径问题
2018/09/25 Javascript
JS+php后台实现文件上传功能详解
2019/03/02 Javascript
配置一个vue3.0项目的完整步骤
2019/04/26 Javascript
详解Webpack4多页应用打包方案
2020/07/16 Javascript
[41:12]Liquid vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
使用Python解析JSON数据的基本方法
2015/10/15 Python
Python的Flask框架的简介和安装方法
2015/11/13 Python
python3+PyQt5实现使用剪贴板做复制与粘帖示例
2017/01/24 Python
python脚本爬取字体文件的实现方法
2017/04/29 Python
python2 与python3的print区别小结
2018/01/16 Python
python实现爬取图书封面
2018/07/05 Python
python导包的几种方法(自定义包的生成以及导入详解)
2019/07/15 Python
Python实现决策树并且使用Graphviz可视化的例子
2019/08/09 Python
Python可变参数会自动填充前面的默认同名参数实例
2019/11/18 Python
HTML5 新表单类型示例代码
2018/03/20 HTML / CSS
eBay奥地利站:eBay.at
2019/07/24 全球购物
员工入职担保书范文
2014/04/01 职场文书
励志演讲稿800字
2014/08/21 职场文书
中学生爱国演讲稿
2014/09/05 职场文书
物流专业专科生职业生涯规划书
2014/09/14 职场文书
销售员岗位职责范本
2015/04/11 职场文书
2016年感恩父亲节活动总结
2016/04/01 职场文书
jQuery class属性操作addClass()与removeClass()、hasClass()、toggleClass()
2021/03/31 jQuery
centos7安装mysql5.7经验记录
2022/05/02 Servers