Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Форум .::NoWa.cc::.
Вернуться   Компьютерный форум NoWa.cc > В помощь вебмастеру > Веб - Программирование > PHP

Уважаемые пользователи nowa.cc. Мы работаем для вас более 20 лет и сейчас вынуждены просить о финансовой помощи по оплате за сервер.
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: Z021474945171 Webmoney WME: E159284508897 Webmoney WMUSDT: T206853643180
Кошелёк для вашей помощи YooMoney 4100117770549562
YooMoney Спасибо за поддержку!

Ответ
 
Опции темы Опции просмотра Language
Старый 15.03.2012, 13:52   #1
Новичок
 
Пол:Мужской
Регистрация: 15.01.2010
Адрес: Украина
Сообщений: 18
Репутация: 0
По умолчанию PHP отдача файла - отдает битые бинарные файлы

Вот здесь http://otvety.google.ru/otvety/threa...b9d1f974&pli=1 задан вопрос о невозможности отдать файлы пользователю.
У меня такая же проблема, но код, который предоставлен не помогает. Помогите, пожалуйста. Вот мой участок кода:



if(!file_exists($filename))
{
echo("<br>Не могу открыть файл<br>Попробуйте использовать только латинские символы в имени файла.</td></tr></table></center></BODY></HTML>");
exit;
}
$fsize = filesize($filename);
$fd = @fopen($filename, "rb");
if(!$fd)
{
echo("<br>Не могу открыть файл<br>Попробуйте использовать только латинские символы в имени файла.</td></tr></table></center></BODY></HTML>");
exit;
}

$content = fread($fd, $fsize);
fclose($fd);

$count = preg_match_all('/\x4d\x54\x68\x64\x5c\x30\x5c\x30\x5c\x30\x06/', $content, $matches); //На самом деле при просмотре через HexView32 такие данные: 4d 54 68 64 00 00 00 06

if($count<>1)
{
echo "<br>Файл не является Standard MIDI File Format 0 или Format 1</td></tr></table></center></BODY></HTML>";
exit;
}


В нем условие $preg_match_all выполняется, т.е. при заданом поиске комбинации $count равняется 1. Вот в такой вид он преобразовывает файл при отдаче пользователю, хотя на сервере файл нормальный.
InFreeBSD вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама
Здесь может быть Ваша реклама


Реклама:


Старый 17.03.2012, 12:52   #2
errante
Постоялец
 
Пол:Мужской
Регистрация: 25.03.2005
Сообщений: 789
Репутация: 788
По умолчанию Re: PHP отдача файла - отдает битые бинарные файлы

Цитата:
Сообщение от InFreeBSD Посмотреть сообщение
preg_match_all

Вы знакомы с этой функцией?
Эта функция создает во первых массив.
Во вторых '/\x4d\x54\x68\x64\x5c\x30\x5c\x30\x5c\x30\x06/', - это шаблон поиска
$content - здесь место поиска
$matches - сюда заносится результат ввиде массива
$count = preg_match_all('/\x4d\x54\x68\x64\x5c\x30\x5c\x30\x5c\x30\x06/', $content, $matches); - идиотская запись
соответсвует $count = $matches;
и соответственно if($count<>1) - бессмыслено

Наверное должно было быть так:
$count = count(preg_match_all('/\x4d\x54\x68\x64\x5c\x30\x5c\x30\x5c\x30\x06/', $content, $matches)); - узнаем кол-во записей в массиве $matches

Учите мат часть
errante вне форума
 
Ответить с цитированием Вверх
Ответ


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При использовании mod_rewrite сервер отдает php-код Searching Настраиваем собственный хостинг 3 14.10.2009 00:12
Битые файлы. Pelsinchik Скорая помощь 35 18.09.2009 17:14
Закачиваются битые файлы static Скорая помощь 6 23.07.2009 12:56
Бинарные деревья Разведчег Базы данных 0 15.06.2008 12:30

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 12:24. Часовой пояс GMT +3.


Copyright ©2004 - 2026 NoWa.cc

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2026, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.03812 секунды с 13 запросами