我想在PHP中为浏览器提供现有文件。 我见过关于image/jpeg的例子,但是这个功能好像把文件保存到磁盘上,你必须先创建一个正确大小的图像对象(或者我只是不明白它:))磁盘上的PHP输出文件到浏览器
在asp中。净我通过读取字节数组中的文件,然后调用context.Response.BinaryWrite(bytearray),所以我正在寻找类似的PHP中的东西。
米歇尔
我想在PHP中为浏览器提供现有文件。 我见过关于image/jpeg的例子,但是这个功能好像把文件保存到磁盘上,你必须先创建一个正确大小的图像对象(或者我只是不明白它:))磁盘上的PHP输出文件到浏览器
在asp中。净我通过读取字节数组中的文件,然后调用context.Response.BinaryWrite(bytearray),所以我正在寻找类似的PHP中的东西。
米歇尔
有fpassthru()应该做的正是你所需要的。请参阅手册进入阅读下面的例子:
见here所有的PHP的文件系统功能。
如果它是一个您想要下载的二进制文件,您可能还想发送正确的头文件,以便弹出“另存为..”对话框。请参阅this question的第一个回答,以获取有关要发送哪些标头的示例。
这应该让你开始: http://de.php.net/manual/en/function.readfile.php
编辑:如果你的Web服务器支持的话,使用
header('X-Sendfile: ' . $filename);
其中文件名中包含像
/var/www/www.example.org/downloads/example.zip
本地路径
比readfile()更快。
(使用头通常安全性的考虑()申请)
+1'X-Sendfile'。 – Christian 2011-06-15 07:28:59
对于我为客户创建的网站和网站,我使用了很久以前发现的PHP脚本。
它可以在这里找到:http://www.zubrag.com/scripts/download.php
我用它的一个稍作修改的版本,让我混淆的文件系统结构(它在默认情况下),除了不允许热链接(默认)和我添加了一些额外的跟踪功能,例如推荐人,IP(默认)以及其他我可能需要的数据。
希望这会有所帮助。
感谢您的脚本。如果我想扩展我的第一个脚本,我肯定会使用它。 – Michel 2010-01-11 09:53:14
我用的ReadFile()(http://www.php.net/readfile)...
但你必须确保你设置正确的“内容类型”与头(),所以浏览器知道如何处理的文件做。
您也可以强制浏览器下载文件,而不是试图使用插件来显示它(如PDF),我总是发现这看起来有点“哈克”,但它在以上链接。
我用这个
if (file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
如果我已经将二进制内容存储为变量,该怎么办?如何将其作为可下载文件输出到浏览器? – CMCDragonkai 2014-03-24 08:34:33