Php файл загрузки не работает с Firefox

Решено, из-за известной проблемы с начальной загрузкой (гнездование <> внутри <кнопка> не работает в Firefox).

Я пытаюсь просто принудительно загрузить файл, и он отлично работает на Chrome & Safari, но не в Firefox.

У меня есть файл download.php для загрузки моего файла (используется в виде «href»):

<?php

$filename="myFile.pdf";
$file="../content/$filename";
$len = filesize($file); // Calculate File Size
if (ob_get_contents()) ob_end_clean();
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Description: File Transfer");
header("Content-Type:application/pdf"); // Send type of file
$header="Content-Disposition: attachment; filename=$filename;"; // Send File Name
header($header );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$len); // Send File Size
@readfile($file);
exit;

?>

Используется с:

<a class="myFileClass" href="download.php">Download</a>

Так с Chrome & Safari, когда я нажимаю на ссылку для скачивания, файл загружается!
Но с Firefox ничего не происходит.

Есть идеи об этой любопытной проблеме?

Спасибо заранее.

0

Решение

    $header="Content-Disposition: attachment; filename=$filename;";

Это неправильно, пожалуйста, используйте кавычки для имени файла. Должно быть как ниже

    header('Content-Disposition: attachment; filename="' . basename($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));
ob_clean();
flush();

readfile($file);
3

Другие решения

В приведенном выше примере со ссылкой на базовое имя и т. Д. Загружается пустой файл.

Приведенный ниже код возвращает данные с HTML-данными, которые также включены в вызов WordPress для вывода, но очищают данные только вне WordPress.

оба кода производят только вызов загрузки в IE.

$filename = $db_record.'_'.date('Y-m-d').'.csv';
header('Pragma: public');
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the Past
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: private', false);
header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename='. $filename);
Readfile($filename);
-2

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector