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 26 PHP
基于PHP异步执行的常用方式详解
Jun 03 PHP
ThinkPHP3.1新特性之多数据库操作更加完善
Jun 19 PHP
PHP使用GIFEncoder类处理gif图片实例
Jul 01 PHP
PHP5全版本绕过open_basedir读文件脚本漏洞详细介绍
Jan 20 PHP
PHP实现自动识别Restful API的返回内容类型
Feb 07 PHP
php获取百度收录、百度热词及百度快照的方法
Apr 02 PHP
php实现的验证码文件类实例
Jun 18 PHP
yii通过小物件生成view的方法
Oct 08 PHP
Laravel中log无法写入问题的解决
Jun 17 PHP
Windows平台实现PHP连接SQL Server2008的方法
Jul 26 PHP
phpStudy配置多站点多域名方法及遇到的403错误解决方法
Oct 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
PHP防盗链代码实例
2014/08/27 PHP
php使用yield对性能提升的测试实例分析
2019/09/19 PHP
可拖动窗口,附带鼠标控制渐变透明,开启关闭功能
2006/06/26 Javascript
JavaScript Event学习第七章 事件属性
2010/02/07 Javascript
JS实现淘宝幻灯片效果的实现方法
2013/03/22 Javascript
实例讲解JS中数组Array的操作方法
2014/05/09 Javascript
JS访问SWF的函数用法实例
2015/07/01 Javascript
jquery实现选中单选按钮下拉伸缩效果
2015/08/06 Javascript
javascript实现3D变换的立体圆圈实例
2015/08/06 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
2015/09/01 Javascript
jquery获取select选中值的方法分析
2015/12/22 Javascript
详谈js中数组(array)和对象(object)的区别
2017/02/27 Javascript
Node.js发送HTTP客户端请求并显示响应结果的方法示例
2017/04/12 Javascript
深入理解ES6学习笔记之块级作用域绑定
2017/08/19 Javascript
JS继承与闭包及JS实现继承的三种方式
2017/10/15 Javascript
原生JS实现瀑布流插件
2018/02/06 Javascript
JavaScript this绑定过程深入详解
2018/12/07 Javascript
JS表格的动态操作完整示例
2020/01/13 Javascript
tracking.js实现前端人脸识别功能
2020/04/16 Javascript
openlayers4实现点动态扩散
2020/08/17 Javascript
jQuery实现鼠标拖动图片功能
2021/03/04 jQuery
python转换摩斯密码示例
2014/02/16 Python
在Windows8上的搭建Python和Django环境
2014/07/03 Python
python 获取当天凌晨零点的时间戳方法
2018/05/22 Python
python aiohttp的使用详解
2019/06/20 Python
python使用正则来处理各种匹配问题
2019/12/22 Python
Python可以实现栈的结构吗
2020/05/27 Python
keras自动编码器实现系列之卷积自动编码器操作
2020/07/03 Python
Python django框架 web端视频加密的实例详解
2020/11/20 Python
python+playwright微软自动化工具的使用
2021/02/02 Python
中国跨镜手机配件批发在线商店:TVC-Mall
2019/08/20 全球购物
2014年社区学雷锋活动总结
2014/03/09 职场文书
文明美德伴我成长演讲稿
2014/05/12 职场文书
我与祖国共奋进演讲稿
2014/09/13 职场文书
《我和小伙伴》教学反思
2016/02/20 职场文书
《狼牙山五壮士》读后感:宁死不屈,视死如归
2019/08/16 职场文书