php如何实现文件下载

  1. 设置超链接的href属性

  <ahref="文件地址"></a>

  如果浏览器不能解析该文件,浏览器会自动下载。而如果文件是图片或者txt,会直接在浏览器中打开。

  2. 输出文件流

  //download.php

  //页面加载的时候就调用

  downloadFile("3.rar","something.rar");

  //$filePath是服务器的文件地址

  //$saveAsFileName是用户指定的下载后的文件名

  function downloadFile($filePath,$saveAsFileName){

  // 清空缓冲区并关闭输出缓冲

  ob_end_clean();

  //r: 以只读方式打开,b: 强制使用二进制模式

  $fileHandle=fopen($filePath,"rb");

  if($fileHandle===false){

  echo "Can not find file: $filePath\n";

  exit;

  }

  Header("Content-type: application/octet-stream");

  Header("Content-Transfer-Encoding: binary");

  Header("Accept-Ranges: bytes");

  Header("Content-Length: ".filesize($filePath));

  Header("Content-Disposition: attachment; filename=\"$saveAsFileName\"");

  while(!feof($fileHandle)) {

  //从文件指针 handle 读取最多 length 个字节

  echo fread($fileHandle, 32768);

  }

  fclose($fileHandle);

  }

  杭州php工程师注:

  (1)download.php可以设置为<a>标签的href属性,点击<a>标签,则浏览器会提示下载。

  (2)jQuery模拟触发<a>的click事件时有bug,应该使用html对象的click方法。$('#hyperLink')[0].click();

  (3)jQuery Mobile会改变<a>的行为。所以,在使用jQuery Mobile时,无论手动点击还是java模拟点击,都会跳转到download.php页面,并不会触发下载。

(4)location.href或location.replace定向到download.php也可以实现下载。这种方法不受jQuery Mobile的影响。

  (5)以上两种方法进行下载时,chrome会提示“Resource interpreted as Document but transferred with MIME type application/octet-stream”。为<a>增加html5属性download可以解决这个问题。<a href="..." download></a>而location.href或location.replace触发的下载,暂无办法解决。

php如何实现文件下载的更多相关文章

  1. Android 浏览器 —— 使用 WebView 实现文件下载

    对当前的WebView设置下载监听 mCurrentWebView.setDownloadListener(new DownloadListener() { @Override public void ...

  2. C# 文件下载 : WinINet

    在 C# 中,除了 WebClient 我们还可以使用一组 WindowsAPI 来完成下载任务.这就是 Windows Internet,简称 WinINet.本文通过一个 demo 来介绍 Win ...

  3. ASP.net MVC 文件下载的几种方法(欢迎讨论)

    在ASP.net MVC 中有几种下载文件的方法 前提:要下载的文件必须是在服务器目录中的,至于不在web项目server目录中的文件下载我不知道,但是还挺想了解的. 第一种:最简单的超链接方法,&l ...

  4. 让IIS7.0.0.0支持 .iso .7z .torrent .apk等文件下载的设置方法

    IIS默认支持哪些MIME类型呢,我们可以这样查看:打开IIS管理器(计算机--管理--服务和应用程序--Internet信息服务(IIS)管理器:或者Win+R,输入inetmgr,Enter),在 ...

  5. Android中使用AsyncTask实现文件下载以及进度更新提示

    Android提供了一个工具类:AsyncTask,它使创建需要与用户界面交互的长时间运行的任务变得更简单.相对Handler来说AsyncTask更轻量级一些,适用于简单的异步处理,不需要借助线程和 ...

  6. 利用Tomcat内置的servlet实现文件下载功能

    起因 最近博客所在的VPS挂了又要重装系统,又要重装各种软件. 以前我也经常更换VPS,每次更换都是各种坑爹事情..比如要下载java.下载tomcat.下载mysql..........以前每次我都 ...

  7. 多个文件下载打包生成zip格式下载

    这个多个文件下载生成zip格式必须先引用一个ICSharpCode.SharpZipLib.dll. 代码如下  //将多个文件打包成压缩文件zip格式下载         protected voi ...

  8. .net一般处理程序(httphandler)实现文件下载功能

    Handler文件代码如下: public class MDMExporterWeb : IHttpHandler { public void ProcessRequest(HttpContext c ...

  9. asp.net 文件下载(txt,rar,pdf,word,excel,ppt)

    aspx 文件下载说起来一点都不难,但是在做的过程中还是遇到了一些小小的问题,就是因为这些小小的问题,导致解决起来实在是太难了,其中一个就是Response.End();导致下载文件出现线程终止的情况 ...

  10. JavaScript多文件下载

    对于文件的下载,可以说是一个十分常见的话题,前端的很多项目中都会有这样的需求,比如 highChart 统计图的导出,在线图片编辑中的图片保存,在线代码编辑的代码导出等等.而很多时候,我们只给了一个链 ...

随机推荐

  1. 依赖注入Unity框架

    依赖注入和控制反转是对同一件事情的不同描述,从某个方面讲,就是它们描述的角度不同.依赖注入是从应用程序的角度在描述,可以把依赖注入描述完整点:应用程序依赖容器创建并注入它所需要的外部资源:而控制反转是 ...

  2. Linux下编译安装Memcache

    需要gcc,make,cmake,autoconf,libtool等工具,联网后,yum install -y gcc,make,cmake,autoconf,libtool 编译安装libevent ...

  3. ES6 | ES6新语法 在编码实践中的应用

    本章探讨如何将 ES6 的新语法,运用到编码实践之中,与传统的 JavaScript 语法结合在一起,写出合理的.易于阅读和维护的代码. 多家公司和组织已经公开了它们的风格规范,本文的内容主要参考了  ...

  4. DOM相关知识点

    内容待补充... DOM相关注意题目: DOM的最小组成单位叫做 //节点 Node DOM 有自己的国际标准,目前的通用版本是 //DOM 3 DOM 树的根节点 //HTML 元素 Element ...

  5. P1634 禽兽的传染病

    题目背景 mxj的启发. 题目描述 禽兽患传染病了.一个禽兽会传染x个禽兽.试问n轮传染后有多少禽兽被传染? 输入输出格式 输入格式: 两个数x和n. 输出格式: 一个数:被传染的禽兽数. 输入输出样 ...

  6. C# 基础复习 三 XML操作

    XML 可扩展标记语言(所有标签都是自己定义,没有固定格式) 如果要给XML规定格式,可以使用dtd (dtd是什么?你不会自己百度吗) XML主要用来存储数据 XML的要求:     根节点只能有一 ...

  7. C语言基础 (4) 原码反码补码与数据类型

    1.回顾 使用gcc编译代码 gcc hello.c -o hello windows下编译代码 C语言编译步骤: 预处理(头文件展开,干掉注释) gcc -E hello.c -o hello.i ...

  8. python3 继承与组合

    什么叫继承? 所谓继承,就是class_A里面的功能从class_B中直接获取,从而节约了代码且使用方便. 什么叫组合? 除了继承,还有一种我们可以实现目的的方式,那就是组合,同样可以节约代码.只不过 ...

  9. 论wpf的设备无关性 - 简书

    原文:论wpf的设备无关性 - 简书 WPF从发布之日起,一直将“分辨率无关(resolution independence)”作为其亮点,声称使用WPF制作的用户界面在轻巧的Ultra-Mobile ...

  10. webpack操作基础

    webpack 是一个前端加载/打包工具,根据模块的依赖关系进行静态分析,并依根据规则生成对应的静态资源