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下通过POST还是GET来传值
Jun 05 PHP
PHP之生成GIF动画的实现方法
Jun 07 PHP
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
May 04 PHP
PHP获取windows登录用户名的方法
Jun 24 PHP
PHP中使用GD库绘制折线图 折线统计图的绘制方法
Nov 09 PHP
YiiFramework入门知识点总结(图文教程)
Dec 28 PHP
使用phpexcel类实现excel导入mysql数据库功能(实例代码)
May 12 PHP
CI(CodeIgniter)框架视图中加载视图的方法
Mar 24 PHP
Laravel中前端js上传图片到七牛云的示例代码
Sep 04 PHP
PHP whois查询类定义与用法示例
Apr 03 PHP
PHP与Web页面的交互示例详解一
Aug 04 PHP
PHP执行普通shell命令流程解析
Aug 24 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下利用curl判断远程文件是否存在的实现代码
2011/10/08 PHP
php之static静态属性与静态方法实例分析
2015/07/30 PHP
PHP抓取淘宝商品的用户晒单评论+图片+搜索商品列表实例
2016/04/14 PHP
PHP getDocNamespaces()函数讲解
2019/02/03 PHP
ajax中get和post的说明及使用与区别
2012/12/23 Javascript
解释&amp;&amp;和||在javascript中的另类用法
2014/07/28 Javascript
NodeJS Web应用监听sock文件实例
2015/02/18 NodeJs
JavaScript中的关联数组问题
2015/03/04 Javascript
JavaScript之Object类型介绍
2015/04/01 Javascript
Javascript代码实现仿实例化类
2015/04/03 Javascript
AngularJS使用ng-options指令实现下拉框
2016/08/23 Javascript
jQuery判断是否存在滚动条的简单方法
2016/09/17 Javascript
vue实现验证码输入框组件
2017/12/14 Javascript
详解webpack 打包文件体积过大解决方案(code splitting)
2018/04/10 Javascript
Javascript生成器(Generator)的介绍与使用
2021/01/31 Javascript
[45:56]Ti4正赛第一天 VG vs NEWBEE 3
2014/07/19 DOTA
用python结合jieba和wordcloud实现词云效果
2017/09/05 Python
python 常见字符串与函数的用法详解
2018/11/23 Python
Python操作qml对象过程详解
2019/09/26 Python
pycharm2020.2 配置使用的方法详解
2020/09/16 Python
一款恶搞头像特效的制作过程 利用css3和jquery
2014/11/21 HTML / CSS
Html5内唤醒百度、高德APP的实现示例
2019/05/20 HTML / CSS
微软中国官方商城:Microsoft Store中国
2018/10/12 全球购物
Perfume’s Club澳大利亚官网:西班牙领先的在线美容店
2021/02/01 全球购物
serialVersionUID具有什么样的特征
2014/02/20 面试题
总务岗位职责
2013/11/19 职场文书
厨房领班竞聘演讲稿
2014/04/23 职场文书
网站创业计划书
2014/04/30 职场文书
说明书范文
2014/05/07 职场文书
投资建议书模板
2014/05/12 职场文书
政风行风建设责任书
2014/07/23 职场文书
个人借款协议书范本
2014/11/17 职场文书
2015年健康教育工作总结
2015/04/10 职场文书
node.js如何自定义实现一个EventEmitter
2021/07/16 Javascript
angular异步验证器防抖实例详解
2022/03/31 Javascript
为自由献出你的心脏!「进击的巨人展 FINAL」2022年6月在台开展
2022/04/13 日漫