3

ページに移動したときに 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>
4

1 に答える 1

2

Apacheの「mod_deflate」拡張機能がこのタイプのスクリプトで問題を引き起こす可能性があることを読みました。有効にしている場合は、その特定のスクリプトに対して無効にする必要があります。

于 2011-04-05T05:18:17.443 に答える