Файл загрузки файла Php [duplicate]

Другой общий случай, когда можно получить это исключение, включает в себя насмешливые классы во время модульного тестирования. Независимо от используемой насмешливой структуры, вы должны убедиться, что все соответствующие уровни иерархии классов должным образом высмеиваются. В частности, все свойства HttpContext, на которые ссылается тестируемый код, должны быть изделены.

См. « Исключение NullReferenceException при проверке пользовательского AuthorizationAttribute » для несколько подробного примера.

7
задан Rocket Hazmat 29 December 2009 в 03:40
поделиться

3 ответа

Первоначально из http://paul.luminos.nl/update/471 :

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

Андрей делает очень важный комментарий в конце статьи :

«Если вы сжимаете файлы с Zlib, mod_deflate и т. д., заголовок Content-Length не будет точным, так что вы увидите« Неизвестный размер »и« Неизвестное время », при загрузке файлов.

Я хотел бы подчеркнуть это: если ваш браузер, похоже, не подчиняется заголовкам, сгенерированным вашим PHP-скриптом, особенно Content-Length - это довольно вероятно что расширение Apache mod_deflate включено.

Вы можете легко отключить его для одного скрипта, используя следующую строку в соответствующем файле .htaccess:

SetEnvIfNoCase Request_URI ^/download\.php no-gzip dont-vary

, где загружается. Предполагается, что php находится в сценарии загрузки, расположенном в s путь корневого каталога erver (например, www.crimsonbase.com/download.php). (Это потому, что регулярное выражение ^/download\.php.)

15
ответ дан 0b10011 31 August 2018 в 16:04
поделиться
  • 1
    Интересно. Мне нужно посмотреть на это. – Rocket Hazmat 12 March 2010 в 18:13
  • 2
    Спасибо, я получал & quot; gzip & quot; тип содержимого в моей загрузке и был в состоянии избавиться от него с помощью вашей линии htaccess, теперь я снова вижу прогресс загрузки, потому что общий размер файла корректно считывается браузером. – adrianTNT 23 October 2014 в 20:36

У меня была такая же проблема, и я исправил ее, отправив заголовок Content-Length до Content-Disposition.

header('Content-Type: video/mp4');
header("Content-Transfer-Encoding: Binary"); 
header("Content-Length: ".filesize($file_url));
header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\""); 
readfile($file_url);
6
ответ дан Skylar Ittner 31 August 2018 в 16:04
поделиться

Не пытайтесь очистить кеш до функции readfile (). Мой код почти идентичен вашему, и работает отлично.

0
ответ дан user 31 August 2018 в 16:04
поделиться
  • 1
    Пробовал это, ничего. Загрузка по-прежнему отлично работает, только веб-браузеры скажут «неизвестный размер файла». хотя я дал ему «Content-length». Дело в том, что если я использую wget, он сообщает о правильном размере файла. – Rocket Hazmat 30 December 2009 в 22:17
Другие вопросы по тегам:

Похожие вопросы: