Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
Искажение изображений при POST multipart/form-data |

01.06.2010, 20:09
|
|
Участник форума
Регистрация: 15.11.2006
Сообщений: 259
Провел на форуме: 2589211
Репутация:
151
|
|
Искажение изображений при POST multipart/form-data
Писал пост в "вопросы по PHP", но вопрос быстро затерялся, так и не ответили. Сам в итоге так и не разобрался, поэтому создаю тему.
Помогите разобраться.
Была проблема с загрузкой постом файлов на сервак.
Накидал вот такой скрипт для теста (кинул в папку с правами 777).
PHP код:
<?php
if (empty($_FILES["img_file"]["name"])) {
?>
<form action="index.php" method="POST" enctype="multipart/form-data">
img: <input type="file" name="img_file" />
<input type="submit" value="Загрузить" />
</form>
<?php
}
else {
$imageinfo = getimagesize($_FILES['img_file']['tmp_name']);
if($imageinfo['mime'] != 'image/gif' && $imageinfo['mime'] != 'image/jpeg' && $imageinfo['mime'] != 'image/png')
{
echo '<span style="font-size:13px;">Ошибка загрузки изображения.</span>';
}
else
{
move_uploaded_file($_FILES["img_file"]["tmp_name"], $_FILES["img_file"]["name"]);
echo '<img src="'.$_FILES["img_file"]["name"].'" />';
}
}
?>
На денвере всё замечательно. Загружаются jpg,gif,png.
А вот при заливке на хостинг начинаются проблемы.
1) При попытке загрузки jpg/jpeg вываливает "Ошибка загрузки изображения". Причём, $_FILES['img_file']['tmp_name'] не пуст! А вот getimagesize от него уже не берётся - пусто. Правда, догадываюсь, что это связано со вторым вопросом
2) При загрузке оставшихся png и gif он их загружает, отрабатывается move_uploaded_file (файл появляется в папке), но вот потом нифига не отображается. В мозиллке отображается иконка повреждённого файла, в IE крестик...Если слить с сервера файл - не открывается уже. Откуда берётся эта "обработка" файла?
|
|
|

01.06.2010, 20:32
|
|
Познающий
Регистрация: 03.01.2010
Сообщений: 42
Провел на форуме: 162143
Репутация:
3
|
|
Я же тебе ответил как я решил проблему... Я короче все в GIF переделывал и не парился.
Накрайняк попробуй открыть как бинарник и в каждой строке \r\n заменить на \n. Бред, но попробовать чисто ради интереса надо
Последний раз редактировалось SHiNiGaMi; 01.06.2010 в 20:35..
|
|
|

01.06.2010, 21:02
|
|
Участник форума
Регистрация: 15.11.2006
Сообщений: 259
Провел на форуме: 2589211
Репутация:
151
|
|
SHiNiGaMi, cорри, забыл там ответить.
Если ты имеешь в виду переделывать программно, скриптом - то не катит, т.к. он не воспринимает jpg, как картинку, в принципе.
Это одна из причин. Вторая - 256 цветов ну никак не хватает
Ну и третья - gif'ы тоже не загружаются нормально. Я ж говорю, gif и png "портятся", jpg вообще не воспринимаются...
Сравнил файлы сейчас.
При заливке на сервак символы  заменены на пробелы. Как это лечить?
upd: символ 00 заменяется везде на 20
Как вернуть 00 на родину?..
Последний раз редактировалось FindeR; 01.06.2010 в 21:20..
|
|
|

01.06.2010, 21:29
|
|
Познавший АНТИЧАТ
Регистрация: 01.06.2008
Сообщений: 1,047
Провел на форуме: 5321514
Репутация:
3313
|
|
с 00 ты уверен  ?
|
|
|

01.06.2010, 21:32
|
|
Участник форума
Регистрация: 15.11.2006
Сообщений: 259
Провел на форуме: 2589211
Репутация:
151
|
|
Открыл hex-редактором, посмотрел оба файла. Отличаются только этим. Вместо 00 (NUL) везде 20 (пробел)
Последний раз редактировалось FindeR; 01.06.2010 в 21:34..
|
|
|

01.06.2010, 21:42
|
|
наркоман с медалью
Регистрация: 07.05.2005
Сообщений: 3,704
Провел на форуме: 19975136
Репутация:
4536
|
|
хм. а как ты заливаешь файлы? в принципе у curl никогда не было проблем с заливкой файлов и никаких особых знаний и мозгоебателсьтв, которые есть в fsockopen, там нету.
|
|
|

01.06.2010, 21:46
|
|
Участник форума
Регистрация: 15.11.2006
Сообщений: 259
Провел на форуме: 2589211
Репутация:
151
|
|
GreenBear, в первом посте весь скрипт..
Сначала постом с enctype="multipart/form-data" файл падает на сервак, в tmp.
Потом через move_uploaded_file() кладу его, куда мне нужно. Судя по тому, что неправильно берётся getimagesize, проблема при загрузке постом.
Есть уже готовый проект, который работает отлично на masterhost'e, сейчас вот залил на хостинг от nic.ru - такая байда.
Последний раз редактировалось FindeR; 01.06.2010 в 21:49..
|
|
|

01.06.2010, 21:54
|
|
наркоман с медалью
Регистрация: 07.05.2005
Сообщений: 3,704
Провел на форуме: 19975136
Репутация:
4536
|
|
стало быть проблема в хостинге.
|
|
|

01.06.2010, 22:01
|
|
Участник форума
Регистрация: 15.11.2006
Сообщений: 259
Провел на форуме: 2589211
Репутация:
151
|
|
Так увлёкся поиском косяков в своём проекте, что забыл о настройках хостинга.
Выключил charset_module, всё стало на свои места 
Всем спасибо, тему можно прикрыть.
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|