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 EOT定界符的使用详解
Sep 30 PHP
超小PHP小马小结(方便查找后门的朋友)
May 05 PHP
Smarty局部缓存的几种方法简介
Jun 17 PHP
php读取目录及子目录下所有文件名的方法
Oct 20 PHP
php限制上传文件类型并保存上传文件的方法
Mar 13 PHP
PHP基于phpqrcode生成带LOGO图像的二维码实例
Jul 10 PHP
PHP mysql事务问题实例分析
Jan 18 PHP
php利用云片网实现短信验证码功能的示例代码
Nov 18 PHP
通过源码解析Laravel的依赖注入
Jan 22 PHP
详细解读php的命名空间(一)
Feb 21 PHP
php爬取天猫和淘宝商品数据
Feb 23 PHP
Laravel框架执行原生SQL语句及使用paginate分页的方法
Aug 17 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
探讨:php中在foreach中使用foreach ($arr as &amp;$value) 这种类型的解释
2013/06/24 PHP
php关键字仅替换一次的实现函数
2015/10/29 PHP
PHP实现基于图的深度优先遍历输出1,2,3...n的全排列功能
2017/11/10 PHP
JavaScript window.setTimeout() 的详细用法
2009/11/04 Javascript
js 判断文件类型并控制表单提交示例代码
2013/11/14 Javascript
jquery操作select详解(取值,设置选中)
2014/02/07 Javascript
javascript面向对象快速入门实例
2015/01/13 Javascript
jQuery中 prop() attr()使用详解
2015/05/19 Javascript
基于JavaScript如何制作遮罩层对话框
2016/01/26 Javascript
Bootstrap学习笔记之环境配置(1)
2016/12/07 Javascript
探索webpack模块及webpack3新特性
2017/09/18 Javascript
Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件
2017/09/18 Javascript
全面介绍vue 全家桶和项目实例
2017/12/27 Javascript
js+canvas实现滑动拼图验证码功能
2018/03/26 Javascript
Vue全局分页组件的实现代码
2018/08/10 Javascript
vuejs 制作背景淡入淡出切换动画的实例
2018/09/01 Javascript
基于Vue2实现简易的省市区县三级联动组件效果
2018/11/05 Javascript
vscode 调试 node.js的方法步骤
2020/09/15 Javascript
Vue实现省市区三级联动
2020/12/27 Vue.js
[01:26]DOTA2荣耀之路2:iG,China
2018/05/24 DOTA
python获取本机mac地址和ip地址的方法
2015/04/29 Python
python利用不到一百行代码实现一个小siri
2017/03/02 Python
Windows下安装python MySQLdb遇到的问题及解决方法
2017/03/16 Python
Python 将Matrix、Dict保存到文件的方法
2018/10/30 Python
python的pytest框架之命令行参数详解(上)
2019/06/27 Python
Python json模块与jsonpath模块区别详解
2020/03/05 Python
VScode连接远程服务器上的jupyter notebook的实现
2020/04/23 Python
亚洲最大旅游体验平台:KKday
2017/10/21 全球购物
Halston Heritage官网:简洁的日装,稍显奢华的晚装
2018/11/20 全球购物
马德里著名的运动鞋商店:NOIRFONCE
2019/04/12 全球购物
俄罗斯电子产品在线商店:UltraTrade
2020/01/30 全球购物
Java面试题汇总
2015/12/06 面试题
艺术设计专业个人求职信范文
2013/12/11 职场文书
银行存款证明样本
2014/01/17 职场文书
店铺转让协议书(2014版)
2014/09/23 职场文书
MySQL限制查询和数据排序介绍
2022/03/25 MySQL