我正在使用简单的文件下载脚本:
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;
}
它在最大200mb的本地服务器上运行。
当我在我的网站上尝试此代码时,它将下载173KB而不是200MB的文件。
我检查了所有内容,编写了一些自定义代码(使用ob函数和fread而非readfile),但无法下载大文件。
谢谢您的回答。
我与以下代码有关的一个问题是,您无法控制输出流,让PHP处理输出流而又不知道后台到底发生了什么:
您应该做的是建立一个可以控制和复制accros服务器的输出系统。
例如:
if (file_exists($file))
{
if (FALSE!== ($handler = fopen($file, 'r')))
{
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: chunked'); //changed to chunked
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
//header('Content-Length: ' . filesize($file)); //Remove
//Send the content in chunks
while(false !== ($chunk = fread($handler,4096)))
{
echo $chunk;
}
}
exit;
}
echo "<h1>Content error</h1><p>The file does not exist!</p>";
这只是基本内容,但您可以尝试一下!
我想用php从我的服务器下载文件。我搜索了谷歌,在这里找到了答案。这个答案表明我必须为此编写这些代码。 但我能做到这一点,只需这两行: 那么,我为什么还要像上面的代码那样多写几行呢?
问题内容: 我希望在我的一个站点的每个视频下方添加“下载此文件”功能。我需要强迫用户下载文件,而不仅仅是链接到文件,因为有时这会开始在浏览器中播放文件。问题是,视频文件存储在单独的服务器上。 有什么办法可以强制用PHP下载吗? 问题答案: 您可以尝试这样的事情: 我刚刚测试了它,它对我有用。 请注意,为了能够读取远程URL,您需要启用它。
问题内容: 我有一个URL,用于保存我的工作中的一些项目,它们大部分是MDB文件,但也有一些JPG和PDF。 我需要做的是列出该目录中的每个文件(已完成)并为用户提供下载它的选项。 使用PHP如何实现? 问题答案: 要读取目录内容,可以使用readdir()并使用脚本(在我的示例中)来下载文件 在其中,您可以强制浏览器发送下载数据,并使用basename()来确保客户端不会传递其他文件名,例如
问题内容: 我的服务器上有一个CSV文件。如果用户单击链接,则应下载该链接,但会在我的浏览器窗口中打开。 我的代码如下 这是我所有开发工作都在上面的普通Web服务器。 我尝试了类似的东西: 现在我文件的内容: 现在我的问题是正在下载,而不是我的CSV文件。它创建一个新文件。 问题答案: .htaccess解决方案 要强行下载服务器上的所有CSV文件,请添加.htaccess文件: PHP解决方案
问题内容: 我想使用ajax功能进行下载,从而用户将单击下载链接,该链接将(使用ajax和$ _GET)访问一个PHP文件,该PHP文件将处理发送的$ _GET变量并访问正确的文件进行下载。 我有一些PHP脚本来处理$ _GET变量的处理,这些变量可以单独工作,但是使用Ajax访问时,它们将停止工作。 我正在使用的Ajax / PHP代码如下: 请仔细阅读我的代码,帮助我找到我做错了什么。 谢谢
本文向大家介绍浅析PHP文件下载原理,包括了浅析PHP文件下载原理的使用技巧和注意事项,需要的朋友参考一下 1、php下载原理图 2、文件下载源码: 3、文件编码问题解决方法: 如果文件名是中文,php的函数不能识别中文文件名,一般如果程序编码为utf-8,php的函数比较古老,只能识别gb2312编码的中文,所以把中文用iconv(“原编码”,”要转成的编码”,”要转码的字符串”)函数可以转