0

我制作了自己的简单解决方案版本,用于在 PHP 中发送大文件。它使用文件块。该解决方案来自各种来源,我复制粘贴以下代码来实现“分块”:

$handle = fopen($filename, 'rb'); 

while (!feof($handle))
{ 
    print(@fread($handle, $chunksize));

    ob_flush();
    flush();
} 

fclose($handle);

由于它用于print将每个块发送到浏览器,因此它对字符编码非常敏感,其中 PHP 脚本被编码。例如,我注意到,当脚本保存在 中时ANSI,下载的文件已损坏。只有,如果我保存并上传编码为 的脚本utf-8,文件就可以了。

有没有更好的功能,而不是print做同样的事情(将文件发送到浏览器),这将是脚本文件编码的独立 - 因为,例如,会强制二进制传输到浏览器?

4

1 回答 1

1

对于您应该使用的小文件readfile,这使您可以将文件发送到客户端。对于非常大的文件,这些功能可能由于内存问题而不起作用。

file_get_contents如果您需要在发送之前对其进行处理,还有一个函数可以将所有文件内容放入一个变量中。Likereadfile仅推荐用于“小”文件。“小”取决于允许运行 PHP 进程的内存(memory_limitphp.ini 中的参数)。通常服务器将其设置为 8M 到 128M,默认为 16MB。

于 2014-02-24T14:50:10.907 回答