现在试图让它工作一段时间,我已经阅读了一堆SO帖子。但我已经尝试了所有这一切,但它不起作用..
这是我现在正在尝试的代码:
header("Content-type: application/octet-stream");
header("Content-Length: " . filesize($_REQUEST['file']));
header("Content-Disposition: attachment; filename=".basename($_REQUEST['file']));
readfile($_REQUEST['file']);
但它不起作用。它适用于我的所有其他文件,但不适用于.FLV。 它显示大小为190字节,它只保存一个190字节的文件。它确实有正确的网址,因为我可以在浏览器中输入网址并播放视频。
有什么想法吗?
我尝试了很多标题:
header('Pragma: public'); // required
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=".basename($_REQUEST['file']));
header("Content-Type: video/mpeg");
header("Content-Transfer-Encoding: binary");
header("Content-Length: " . filesize($_REQUEST['file']));
header('Cache-Control: must-revalidate, post-check=0, pre-check=0', false);
header('Cache-Control: private', false); // required for certain browsers
我想要的是一个savefile.php文件,它可以保存所有不同的视频格式,还有zip,rar,exe等文件。如果根据文件给出的文件扩展名来支持所有内容将会很棒......
编辑:
我甚至尝试过使用fopen,但没有任何效果。它显示190个字节,但我知道url是正确的事实。并且文件正常工作(现在在xampp本地测试,所以我可以轻松访问我的文件)
答案 0 :(得分:1)
你不应该改变内存限制 - 对于几乎所有东西来说,32-64 mb就足够了。
将您的readfile($_REQUEST['file']);
更改为:
$handle=fopen($_REQUEST['file'], 'rb');
while (!feof($handle))
{
echo fread($handle, 8192);
flush();
}
fclose($handle);
这将读取8kb的文件,然后将其推送到客户端,依此类推......它将消耗不多的内存(因为它不能一次读取整个文件)。
答案 1 :(得分:0)
啊,找到了答案..没想到打开190字节的.flv文件并查看其中的内容。有一条错误消息:
<br />
<b>Fatal error</b>: Allowed memory size of 134217728 bytes exhausted (tried to allocate 197980160 bytes) in <b>C:\xampp\htdocs\portfolio_003\savefile.php</b> on line <b>47</b><br />
所以,我只需要改变php.ini中的值