Размер файла не будет отображаться в скрипте загрузки PHP во время загрузки файла - PullRequest
3 голосов
/ 05 апреля 2011

Я использую PHP-скрипт для загрузки файла, когда вы переходите на страницу, но я не могу настроить его так, чтобы, когда человек скачивает файл, он отображал размер файла (мой показывает) неизвестное оставшееся время «). Я посмотрел вокруг в Google и не могу найти, как сделать так, чтобы размеры файлов показывались мне, потому что согласно всем этим сценариям я делаю это правильно. У меня есть echo'd размер файла, чтобы убедиться, что скрипт правильно читает файл и возвращает правильный размер файла в байтах.

$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 Ответ

2 голосов
/ 05 апреля 2011

Я прочитал, что расширение "mod_deflate" в Apache может вызвать проблемы с этим типом скрипта. Если он включен, его следует отключить для этого конкретного сценария.

...