Я написал эту функцию, и все работает хорошо, пока я не попытаюсь открыть загруженную копию, и это показывает, что файл недействителен. Вот моя функцияForce загружает работу, но показывается недействительно при попытке открыть локально
function download_file() {
//Check for download request:
if(isset($_GET['file'])) {
//Make sure there is a file before doing anything
if(is_file($this->path . basename($_GET['file']))) {
//Below required for IE:
if(ini_get('zlib.output_compression')) {
ini_set('zlib.output_compression', 'Off');
}
//Set Headers:
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $this->path . basename($_GET['file'])) . ' GMT');
header('Content-Type: application/force-download');
header('Content-Disposition: inline; filename="' . basename($_GET['file']) . '"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($this->path . basename($_GET['file'])));
header('Connection: close');
readfile($this->path . basename($_GET['file']));
exit();
}
}
}
EDIT: По недействителен, например загрузить картинку и попытаться увидеть его в iPhotos или Windows Picture Viewer, и он говорит, формат файла не поддерживается. Когда я просматриваю его на сервере, он выглядит нормально, но после загрузки он поврежден.
В несвязанной ноте: Имеет ли базовые() обеспечивает защиту от атак LFI? –
Вы должны быть более конкретными. Как это «недействительно»? Каково его содержание? – Artefacto
Попробуйте использовать простой текстовый файл и посмотрите загруженные данные с помощью шестнадцатеричного просмотра. – Gumbo