我正在尝试在php中运行以下内容
$ test = svn cat ....
现在$ test的输出基本上是svn返回的二进制文件。如何将此二进制文件作为下载提供。我试图提出以下内容:
$test = `svn cat ....`
header("Content-Disposition: attachment; filename=" . urlencode($filename));
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Description: File Transfer");
echo $test;
答案 0 :(得分:1)
您是否考虑将此文件保存到硬盘上的临时位置并从那里提供服务?是否真的有必要从内存中提供文件?如果您有500人下载此文件怎么办?当用户下载它们时,服务器是否会将所有500个文件保存在内存中?
我的建议是,将文件保存到Web服务器可访问的临时位置,并为其提供链接。
答案 1 :(得分:1)
除了彼得D的回答;您可以将二进制文件写入文件系统,然后将其作为下载服务器。而不是给用户一个链接。
首先尝试使用简单的文本文件,如果可行的话;尝试使用二进制文件。
答案 2 :(得分:1)
答案 3 :(得分:1)
来自passthru()
的PHP.net文档上的the comments:
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"myfile.zip\"");
header("Content-Length: 11111");
passthru("cat myfile.zip",$err);
exit();
以上代码由igor在bboy dot ru提供。
答案 4 :(得分:0)
问题可能是你有三个内容类型的标题 - 据我所知,浏览器只接受一个,所以我会选择octet-stream。