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上传图片、删除图片实现代码
May 12 PHP
PHP,ASP.JAVA,JAVA代码格式化工具整理
Jun 15 PHP
无法在发生错误时创建会话,请检查 PHP 或网站服务器日志,并正确配置 PHP 安装最快的解决办法
Aug 01 PHP
php 模拟get_headers函数的代码示例
Apr 27 PHP
php利用单例模式实现日志处理类库
Feb 10 PHP
PHP @ at 记号的作用示例介绍
Oct 10 PHP
PHP程序员必须清楚的问题汇总
Dec 18 PHP
PHP读书笔记整理_结构语句详解
Jul 01 PHP
总结PHP删除字符串最后一个字符的三种方法
Aug 30 PHP
关于PHP中字符串与多进制转换函数的实例代码
Nov 03 PHP
解决Laravel 不能创建 migration 的问题
Oct 09 PHP
PHP 8新特性简介
Aug 18 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
印尼林东PWN黄金曼特宁咖啡豆:怎么冲世界上最醇厚的咖啡冲煮教程
2021/03/03 冲泡冲煮
PHP无刷新上传文件实现代码
2011/09/19 PHP
php+ajax导入大数据时产生的问题处理
2014/06/11 PHP
Yii中CGridView禁止列排序的设置方法
2016/07/12 PHP
ThinkPHP框架获取最后一次执行SQL语句及变量调试简单操作示例
2018/06/13 PHP
JavaScript让IE浏览器event对象符合W3C DOM标准
2009/11/24 Javascript
20款非常优秀的 jQuery 工具提示插件 推荐
2012/07/15 Javascript
jquery实现submit提交表单
2015/02/03 Javascript
JavaScript排序算法动画演示效果的实现方法
2016/10/18 Javascript
JavaScript数组去重的6个方法
2017/01/21 Javascript
详解nodejs模板引擎制作
2017/06/14 NodeJs
Vue绑定内联样式问题
2018/10/17 Javascript
详解处理Vue单页面应用SEO的另一种思路
2018/11/09 Javascript
解决vuecli3中img src 的引入问题
2020/08/04 Javascript
js+css实现扇形导航效果
2020/08/18 Javascript
[05:02][DOTA2]DOTA进化论 第一期
2013/09/27 DOTA
[01:38:19]夜魇凡尔赛茶话会 第五期
2021/03/11 DOTA
Python中tell()方法的使用详解
2015/05/24 Python
python dataframe 输出结果整行显示的方法
2018/06/14 Python
Python中的list与tuple集合区别解析
2019/10/12 Python
Selenium启动Chrome时配置选项详解
2020/03/18 Python
纯CSS3实现的8种Loading动画效果
2014/07/05 HTML / CSS
css3中背景尺寸background-size详解
2014/09/02 HTML / CSS
ALDI奥乐齐官方海外旗舰店:德国百年超市
2017/12/27 全球购物
请写出char *p与"零值"比较的if语句
2014/09/24 面试题
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
2015/09/07 面试题
MVC的各个部分都有那些技术来实现?如何实现?
2016/04/21 面试题
珍惜水资源建议书
2014/03/12 职场文书
乡镇消防工作实施方案
2014/03/27 职场文书
甜品蛋糕店创业计划书
2014/09/21 职场文书
支部书记四风问题自我剖析材料
2014/09/29 职场文书
2014年药店店长工作总结
2014/11/17 职场文书
物业工程部主管岗位职责
2015/04/16 职场文书
Vue3 Composition API的使用简介
2021/03/29 Vue.js
Pytorch DataLoader shuffle验证方式
2021/06/02 Python
python全面解析接口返回数据
2022/02/12 Python