Файл, загруженный в PHP с использованием Firefox, имеет неправильный размер - PullRequest
0 голосов
/ 10 марта 2012

У меня проблема с недействительными сертификатами подписи для файлов, загруженных с помощью Firefox.IE, Opera, Safari и Chrome все в порядке.Если файл загружается напрямую, щелкнув ссылку в FF, это также нормально, но если файл загружен с использованием PHP в целях безопасности, он на 1 байт больше, с прикрепленным x0A в конце, и я думаю, что это приводит к сбою проверки проверки,PHP очень прост:

<?php
$file = "../downloads/".$_GET['link'];
$size = filesize($file);
$type = filetype($file);
header('Content-Type: application/octet-stream'); 
header("Content-Transfer-Encoding: Binary");  
header( "Content-Disposition: attachment; filename=".basename($file));
header("Content-Length: ".$size); 
header("Content-Type: ".$type);
readfile($file);
?>

У кого-нибудь есть идеи, почему только у Firefox могут возникнуть проблемы с получением размера прямо здесь?Благодарен за любые идеи.

Ответы [ 3 ]

4 голосов
/ 10 марта 2012
  1. Проверьте, существует ли файл и находится ли он в разрешенном месте - теперь злоумышленник может загрузить почти каждый файл на вашем веб-сервере
  2. Не используйте закрывающий phptag - ?>, каждый пробел после негобудет отправлено в браузер
  3. Используйте exit; сразу после чтения файла, чтобы убедиться, что никакая другая функция, которая производит вывод, не вызывается.
1 голос
/ 10 марта 2012

проверьте заголовок Content-Type, вы устанавливаете его дважды, чтобы использовать последний, это может быть что-то вроде «Content-Type: file» из-за функции filetype (), браузер не может понять »filemsgstr "тип контента и принять его как текстовый файл.Я думаю, что это причина дополнительного 0x0a.Заголовок комментария ("Content-Type:". $ Type); "и это будет работать нормально.

0 голосов
/ 10 марта 2012

заменить ниже строки

<?php
header("Content-Length: ".strlen($file));
?>

удачи:)

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