文件下载期间文件大小不会显示在 PHP 下载脚本上

Posted

技术标签:

【中文标题】文件下载期间文件大小不会显示在 PHP 下载脚本上【英文标题】:File size will not display on PHP download script during file download 【发布时间】:2011-04-05 05:11:17 【问题描述】:

当您转到某个页面时,我正在使用 php 脚本下载文件,但我无法将其设置为当有人下载​​文件时,它会显示文件大小(我的显示“剩余时间未知”)。我在 Google 上环顾四周,找不到如何为我显示文件大小,因为根据所有这些脚本,我做对了。我已经回显了文件大小以确保脚本正确读取文件,并返回正确的文件大小(以字节为单位)。

$file = 'audio/song.mp3';

if(file_exists($file)) 
    header('Content-description: File Transfer');
    header('Content-type: application/force-download');
    header('Content-disposition: attachment; filename="' . $songname . '_' . $filetype . '.' . $ext . '"');
    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;

else 
    die;

提前致谢。


谢谢,禁用 mod_deflate 有效。

如果有人在这里绊倒并需要弄清楚如何修复它,请将其添加到您的 .htaccess 中。

    # for URL paths that begin with "/foo/bar/"
SetEnvIf Request_URI ^/foo/bar/ no-gzip=1

# for files that end with ".py"
<FilesMatch \.py$>
    SetEnv no-gzip 1
</FilesMatch>

【问题讨论】:

一定要把答案标记为正确的。 【参考方案1】:

我了解到 Apache 的“mod_deflate”扩展可能会导致此类脚本出现问题。如果您启用了它,您应该为该特定脚本禁用它。

【讨论】:

以上是关于文件下载期间文件大小不会显示在 PHP 下载脚本上的主要内容,如果未能解决你的问题,请参考以下文章

我的块大小中没有足够的块 - PHP 下载脚本导致 20% 的文件大小下载

PHP PHP下载任何文件大小的脚本

使用 PHP 下载脚本发送正确的文件大小

任何文件大小的PHP下载脚本

上传和下载 PHP MySQL 脚本

使用php上传1GB文件