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
Windows PHP5和Apache的安装与配置
Jun 08 PHP
PHP session会话的安全性分析
Sep 08 PHP
PHP内核介绍及扩展开发指南―基础知识
Sep 11 PHP
php检测文件编码的方法示例
Apr 25 PHP
php结合curl实现多线程抓取
Jul 09 PHP
PHP中常用的魔术方法
Apr 28 PHP
基于php流程控制语句和循环控制语句(讲解)
Oct 23 PHP
PHP PDOStatement::columnCount讲解
Jan 30 PHP
php array 转json及java 转换 json数据格式操作示例
Nov 13 PHP
PHP利用缓存处理用户注册时的邮箱验证,成功后用户数据存入数据库操作示例
Dec 31 PHP
php去除数组中为0的元素的实例分析
Nov 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无法实现多线程的问题
2015/09/25 PHP
php利用header函数下载各种文件
2016/08/24 PHP
PHP基于堆栈实现的高级计算器功能示例
2017/09/15 PHP
js判断输入是否为正整数、浮点数等数字的函数代码
2010/11/17 Javascript
js 判断脚本加载完毕的代码
2011/07/13 Javascript
基于KMP算法JavaScript的实现方法分析
2013/05/03 Javascript
JS中使用Array函数shift和pop创建可忽略参数的例子
2014/05/28 Javascript
jQuery 过滤方法filter()选择具有特殊属性的元素
2014/06/15 Javascript
form.submit()不能提交表单的原因分析
2014/10/23 Javascript
深入探讨JavaScript String对象
2015/03/09 Javascript
jquery京东商城双11焦点图多图广告特效代码分享
2015/09/06 Javascript
学习JavaScript鼠标响应事件
2015/12/25 Javascript
Web前端开发工具——bower依赖包管理工具
2016/03/29 Javascript
JS递归遍历对象获得Value值方法技巧
2016/06/14 Javascript
Javascript 正则表达式校验数字的简单实例
2016/11/02 Javascript
史上最全JavaScript数组去重的十种方法(推荐)
2017/08/17 Javascript
在vue项目中安装使用Mint-UI的方法
2017/12/27 Javascript
angular6.0使用教程之父组件通过url传递id给子组件的方法
2018/06/30 Javascript
webpack的CSS加载器的使用
2018/09/11 Javascript
微信小程序城市选择及搜索功能的方法
2019/03/22 Javascript
angular 表单验证器验证的同时限制输入的实现
2019/04/11 Javascript
详解vue中使用vue-quill-editor富文本小结(图片上传)
2019/04/24 Javascript
Vue实现点击显示不同图片的效果
2019/08/10 Javascript
JS造成内存泄漏的几种情况实例分析
2020/03/02 Javascript
[01:15:00]LGD vs Mineski Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
详细介绍Python语言中的按位运算符
2013/11/26 Python
Python下的常用下载安装工具pip的安装方法
2015/11/13 Python
Python自动化测试Eclipse+Pydev 搭建开发环境
2016/08/15 Python
Python实现图片转字符画的示例代码
2017/08/21 Python
Python工程师必考的6个经典面试题
2020/06/28 Python
伊芙丽官方旗舰店:中国淑女一线品牌
2017/12/01 全球购物
公司办公室岗位职责
2014/03/19 职场文书
成绩单家长评语大全
2014/04/16 职场文书
党的群众路线教育实践活动个人对照检查材料(企业)
2014/11/05 职场文书
教师节祝酒词
2015/08/11 职场文书
2016学校元旦晚会经典开场白台词
2015/12/03 职场文书