PHP 使用 header 方式实现文件下载功能

摘要:
header()函数向客户端发送原始的HTTP报头。

header() 函数向客户端发送原始的 HTTP 报头。

下载文件要用的的请求头:

header("Content-type:application/octet-stream");
header("Accept-Ranges:bytes");
header("Accept-Length:" . $file_Size);
header("Content-Disposition:attachment;filename=" . $filename);
  • content-type: 文件类型
  • Accept-Ranges: 表示接收数据的类型或者范围,图片属于二进制的东西所以需要使用字节的方式传输
  • Accept-Length: 表示接收的文件大小,php 文件下载需要告诉浏览器下载的文件有多大
  • Content-Disposition: 附件只需要把文件名给过去就可以,这个名称就是下载时显示的文件名称

文件名是中文的话,需要注意转码

$filename = iconv("UTF-8", "GB2312", $filename);

具体实现代码如下:

$file = $_GET['file'];
if(file_exists($file)){
	header("Content-type:application/octet-stream");
	$filename = iconv("UTF-8", "GB2312", basename($file));
	header("Content-Disposition:attachment;filename=" . $filename);
	header("Accept-ranges:bytes");
	header("Accept-length:".filesize($file));
	readfile($file);
} else {
	echo "<script>alert('文件不存在')</script>";
}

免责声明:文章转载自《PHP 使用 header 方式实现文件下载功能》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇NPOI读取ExcelHomeKit开发(一)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

阿里云直播服务 sdk demo php

[php] <?php   /**   * Created by PhpStorm.   * User: Administrator   * Date: 2016/12/8 0008   * Time: 11:05   */      class Aliyun{       private $accessKeyId = "";          ...

PHP的单例模式

单例模式顾名思义,就是只有一个实例。 作为对象的创建模式, 单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例, 这个类我们称之为单例类。 单例模式的要点有三个: 一是某个类只能有一个实例; 二是它必须自行创建这个实例; 三是它必须自行向整个系统提供这个实例。 下面我们讨论下为什么要使用PHP单例模式? 多数人都是从单例模式的字面上的意...

PHP date("Y-m-d H:i:s");获取当前时间 差8小时解决办法

原因: 从php5.1.0开始,php.ini里加了date.timezone这个选项,并且默认情况下是关闭的也就是显示的时间(无论用什么php命令)都是格林威治标准时间和我们的时间(北京时间)差了正好8个小时。 关于timezone 大陆内地可用的值是:Asia/Chongqing ,Asia/Shanghai ,Asia/Urumqi ,PRC(依次为...

C# winForm 定时访问PHP页面小工具

IDE:vs2019 项目文件: 链接: https://pan.baidu.com/s/1wys1RUKwoNs1kuHbjBZSKw 提取码: xs5e 使用场景:定时访问本机(服务器)的某个页面,发送参数。执行计划任务。 界面: C# 代码: using System; using System.Net; using System.Text;...

NoSql数据库CounchDB的介绍

本文可以说是我看过的对 CouchDB 的最全面的介绍。 概述 CouchDB,大家或多或少都听说过。它到底有什么特性,适合哪些应用场景,和我们常用的关系型数据库有什么区别? 这些问题,可能我们心里都不是非常清楚。在以前的Blog中(PS,不是在javaeye哦),我提及了几次CouchDB,但是仅仅限于编译,安装这些浮在水面上的工作。今天抽出时间把最近...

laravel excel 导入

<pre name="code" class="php"> /**       * 导入       * 保存       * fyj       */       public function importexambank(Request $request)       {              // dd($examfilename...