php header()函数实现下载功能

本文介绍了如何使用PHP的header()函数实现文件下载功能。通过设置Content-Disposition为attachment,可以触发浏览器的下载对话框。同时,通过指定filename参数,可以自定义下载文件名。此外,还探讨了Content-Type在不同情况下的作用,如指定为image/jpeg时浏览器会正确显示图片,而错误的Content-Type会导致乱码或无法正确解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1、
<?php
    header('Content-Disposition:attachment'); 
    readfile("w.jpg");
?>


header('Content-Disposition: attachment'); 设置 http  报文头,告诉浏览器它所接收的文件的 Content-Disposition 属性为 attachment ,这样浏览器将直接显示接收的内容,而是将接收的内容保存到磁盘。
执行脚本将会弹出下载对话框,提示保存文件,保存的文件名为该脚本的文件名。
<?php
    header('Content-Disposition:attachment;filename:w.jpg'); 
    readfile("w.jpg");
?>


filename:w.jpg指定保存文件名为w.jpg
2、
<?php 
    readfile("w.jpg");
?>


浏览器显示乱码。
<?php 
    readfile("w");
?>


w 和 w.jpg 是同一个文件,只是去掉了 .jpg 后缀。浏览器同样显示乱码。
可是直接将 文件 w 用浏览器打开或window自带的图片浏览器打开将会正常显示图片。说明本地文件 w 用浏览器打开时是通过文件内部的标识来判断文件类型,并解析出来显示。
3、
下面的代码可在浏览器直接显示(图片、pdf 等)。
<?php
header("Content-Type:image/jpeg");
readfile("w");//w为图片文件
?>


Content-Type:image/jpeg 告诉浏览器这是一张图片,你老老实实将它解析出图片显示出来。
如果出现下面的情况:
<?php
header("Content-Type:application/pdf");
readfile("w");//w为图片文件
?>


浏览器看到 Content-Type:application/pdf 后,就知道自己接收的内容是一个pdf文件,就按照pdf来解析,但人家 w 明明不是 pdf 啊,没办法,按规定来,各种乱码输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值