关于自动化:如何在PHP中自动开始下载?

关于自动化:如何在PHP中自动开始下载?

How to Automatically Start a Download in PHP?

您需要在PHP中添加什么代码,才能在访问链接时自动使浏览器将文件下载到本地计算机?

我专门考虑的功能类似于下载站点,它们会在用户单击软件名称时提示用户将文件保存到磁盘上?


在输出文件之前发送以下标头:

1
2
3
4
header("Content-Disposition: attachment; filename="" . basename($File) .""");
header("Content-Type: application/octet-stream");
header("Content-Length:" . filesize($File));
header("Connection: close");

@grom:对"应用程序/八位字节流" MIME类型感兴趣。 我不知道,一直只使用'application / force-download':)


这是发送回pdf的示例。

1
2
3
4
header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="' . basename($filename) . '"');
header('Content-Transfer-Encoding: binary');
readfile($filename);

@Swish我没有发现应用程序/强制下载内容类型可以做任何不同的事情(在IE和Firefox中进行了测试)。 是否有没有不发回实际MIME类型的原因?

同样在PHP手册中,Hayley Watson发表:

If you wish to force a file to be downloaded and saved, instead of being rendered, remember that there is no such MIME type as"application/force-download". The correct type to use in this situation is"application/octet-stream", and using anything else is merely relying on the fact that clients are supposed to ignore unrecognised MIME types and use"application/octet-stream" instead (reference: Sections 4.1.4 and 4.5.1 of RFC 2046).

另外,根据IANA,没有注册的应用程序/强制下载类型。


一个干净的例子。

1
2
3
4
5
6
7
8
9
<?php
    header('Content-Type: application/download');
    header('Content-Disposition: attachment; filename="example.txt"');
    header("Content-Length:" . filesize("example.txt"));

    $fp = fopen("example.txt","r");
    fpassthru($fp);
    fclose($fp);
?>

我的代码适用于txt,doc,docx,pdf,ppt,pptx,jpg,png,zip扩展名,我认为最好显式使用实际的MIME类型。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$file_name ="a.txt";

// extracting the extension:
$ext = substr($file_name, strpos($file_name,'.')+1);

header('Content-disposition: attachment; filename='.$file_name);

if(strtolower($ext) =="txt")
{
    header('Content-type: text/plain'); // works for txt only
}
else
{
    header('Content-type: application/'.$ext); // works for all extensions except txt
}
readfile($decrypted_file_path);


推荐阅读

    linux链接远程命令?

    linux链接远程命令?,系统,地址,网络,密码,软件,名称,工具,服务,电脑,认证,如

    linux下用户权限命令?

    linux下用户权限命令?,管理,系统,密码,地址,权限,时间,基础,信息,基本知识,

    linux下载安装包命令?

    linux下载安装包命令?,软件,系统,名称,位置,数据,名字,通讯,灵活,最新,管理,

    linux用户名改名命令?

    linux用户名改名命令?,系统,密码,命令,代码,名称,用户名,用户,终端,主机名,

    linux下载步骤命令?

    linux下载步骤命令?,系统,软件,网络,电脑,官网,名称,管理,工具,位置,盘中,安

    linux用户分组命令?

    linux用户分组命令?,系统,命令,电脑,信息,时间,标准,资料,用户,文件,用户组,L

    linux命令改用户所属?

    linux命令改用户所属?,系统,文件,名称,用户组,命令,用户,名录,基本知识,所

    linux系统用户组命令?

    linux系统用户组命令?,系统,管理,密码,代码,用户组,用户,命令,邮箱,电脑,名

    linux用户退出命令行?

    linux用户退出命令行?,状态,档案,标准,系统,命令,文件,模式,编辑,指令,主机,l

    linux动态链接库命令?

    linux动态链接库命令?,代码,项目,工程,电脑,网上,文件,程序,静态,命令,目录,

    linux启动浏览器命令?

    linux启动浏览器命令?,系统,情况,发行,不了,官网,环境,工具,传播,基础,软件,

    linux用户自定义命令?

    linux用户自定义命令?,系统,时间,标准,软件,项目,电脑,服务,工具,基本知识,

    linux下载gcc命令?

    linux下载gcc命令?,系统,网上,在线,软件,地方,百度,第一,工作,服务,网站,如何

    linux用户组命令设置?

    linux用户组命令设置?,管理,系统,密码,代码,电脑,用户组,用户,软件,新增,命

    linux进入用户命令行?

    linux进入用户命令行?,系统,地址,工作,服务,信息,命令,首页,电脑,密码,终端,L

    linux用户用不了命令?

    linux用户用不了命令?,系统,档案,不了,命令,网络,密码,信息,情况,用户,权限,l

    linux默认浏览器命令?

    linux默认浏览器命令?,环境,系统,发行,工程,工具,浏览器,软件,情况,网站,管

    linux新增用户组命令?

    linux新增用户组命令?,系统,密码,新增,用户组,联系方式,软件,邮箱,工具,管

    linux网络下载命令?

    linux网络下载命令?,软件,工具,网络,系统,服务,密码,名称,平台,官网,盘中,Lin

    linux显示用户名命令?

    linux显示用户名命令?,密码,系统,信息,时间,地址,命令,用户,用户名,位置,用