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 相关文章推荐
简单采集了yahoo的一些数据
Feb 14 PHP
Search File Contents PHP 搜索目录文本内容的代码
Feb 21 PHP
php产生随机数的两种方法实例代码 输出随机IP
Apr 08 PHP
基于PHP读取csv文件内容的详解
Jun 18 PHP
Windows下的PHP安装文件线程安全和非线程安全的区别
Apr 23 PHP
php中使用session_set_save_handler()函数把session保存到MySQL数据库实例
Nov 06 PHP
php数组添加元素方法小结
Dec 20 PHP
WordPress中用于获取文章信息以及分类链接的函数用法
Dec 18 PHP
yii2超好用的日期组件和时间组件
May 05 PHP
PHP内置函数生成随机数实例
Jan 18 PHP
PHP数组与字符串互相转换实例
May 05 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
Mar 09 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
浅析THINKPHP的addAll支持的最大数据量
2015/02/03 PHP
iOS+PHP注册登录系统 PHP部分(上)
2016/12/26 PHP
Laravel登录失败次数限制的实现方法
2020/08/26 PHP
基于jQuery的ajax功能实现web service的json转化
2009/08/29 Javascript
JS小游戏之象棋暗棋源码详解
2014/09/25 Javascript
jQuery zclip插件实现跨浏览器复制功能
2015/11/02 Javascript
jQuery each函数源码分析
2016/05/25 Javascript
JS之获取样式的简单实现方法(推荐)
2016/09/13 Javascript
JavaScript运动框架 多物体任意值运动(三)
2017/05/17 Javascript
前端跨域的几种解决方式总结(推荐)
2017/08/16 Javascript
微信小程序返回多级页面的实现方法
2017/10/27 Javascript
完美解决手机浏览器顶部下拉出现网页源或刷新的问题
2017/11/30 Javascript
JS动画定时器知识总结
2018/03/23 Javascript
Vue props 单向数据流的实现
2018/11/06 Javascript
js实现轮播图效果 z-index实现轮播图
2020/01/17 Javascript
微信小程序自定义弹出模态框禁止底部滚动功能
2020/03/09 Javascript
js屏蔽F12审查元素,禁止修改页面代码等实现代码
2020/10/02 Javascript
[52:57]2014 DOTA2国际邀请赛中国区预选赛 LGD-CDEC VS HGT
2014/05/21 DOTA
Python使用百度API上传文件到百度网盘代码分享
2014/11/08 Python
1分钟快速生成用于网页内容提取的xslt
2018/02/23 Python
使用python脚本实现查询火车票工具
2018/07/19 Python
浅谈python3.x pool.map()方法的实质
2019/01/16 Python
详细整理python 字符串(str)与列表(list)以及数组(array)之间的转换方法
2019/08/30 Python
python运用pygame库实现双人弹球小游戏
2019/11/25 Python
详解如何解决canvas图片getImageData,toDataURL跨域问题
2018/09/17 HTML / CSS
Fossil美国官网:Fossil手表、手袋、珠宝及配件
2017/02/01 全球购物
奥地利网上书店:Weltbild
2017/07/14 全球购物
联想新加坡官方网站:Lenovo Singapore
2017/10/24 全球购物
运动会稿件50字
2014/02/17 职场文书
聘任书模板
2014/03/29 职场文书
银行先进个人总结
2015/02/15 职场文书
寒假社会实践个人总结
2015/03/06 职场文书
通知函的格式
2015/04/27 职场文书
浅析Python中的套接字编程
2021/06/22 Python
Python制作表白爱心合集
2022/01/22 Python
PostgreSQL数据库去除重复数据和运算符的基本查询操作
2022/04/12 PostgreSQL