Перестала работать принудительная загрузка - PullRequest
1 голос
/ 18 июля 2010

У меня есть php-скрипт, который я использовал годами для принудительной загрузки с моего сайта.Но когда-то в прошлом месяце или около того, он перестал работать и вызывает файл не найдены ошибки.Странно то, что в Firefox, если я просматриваю источник на странице с ошибкой, это файл, который я пытался загрузить.И, выполнив File> Save оттуда, вы получите правильный файл.Так что я знаю, что это не проблема, когда скрипт не находит файл на сервере.

Что-то не так с настройкой заголовков?

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); 
header('Content-Type: application/octet-stream');
header('Content-Transfer-Encoding: Binary');
header('Content-length: '.filesize($file_url));
header('Content-disposition: attachment; filename="'.basename($file_url).'"');
readfile($file_url);

Ответы [ 2 ]

1 голос
/ 18 июля 2010

Можете ли вы попробовать эту функцию?

function force_download($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));
    readfile($file);
    exit;   
}
0 голосов
/ 13 августа 2010

Я в конечном итоге обманул, чтобы сделать эту работу.

header("Location: $file_url"); //file_url is now the real url, not the path

А затем использовал cPanel, чтобы убедиться, что все типы MIME, которые я использовал, были установлены на application/octet-stream.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...