Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: создание изображения из файла, отправленного аяксом
Покинул форум
Сообщений всего: 10
Дата рег-ции: Окт. 2011
Помог: 0 раз(а)
После отправки файла (изображения) аяксом пытаюсь создать изображение через imagecreatefromjpeg. Файл точно загружается но изображение не создаётся. Позже понял, что на сервер оно приходит в виде бинарной строки. можно ли средствами пхп преобразовать бинарную строку до такого вида, чтобы изображение можно было создать imagecreatefromjpeg? Или может быть есть возможность получить изображение напрямую из бинарного потока? Файл формируется filereader-ом. Или искать пути решения на стороне клиента?
sKaa
Отправлено: 01 Декабря, 2012 - 01:17:35
Частый посетитель
Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011 Откуда: Россия г. Нижний Новгород
Помог: 25 раз(а)
[+]
Ajax в принципе не способен отправлять файлы! У вас проблема в чём-то другом. Код в студию.
grechan
Отправлено: 01 Декабря, 2012 - 01:42:13
Новичок
Покинул форум
Сообщений всего: 10
Дата рег-ции: Окт. 2011
Покинул форум
Сообщений всего: 979
Дата рег-ции: Окт. 2011 Откуда: Россия г. Нижний Новгород
Помог: 25 раз(а)
[+]
Если не углубляться, то вы просто отправляете какую-то строку на сервер. Повторяю, сам ajax не способен отправлять файлы целиком.
Но раз уж вы отправляете строку, зачем вы ищете что-то в массиве $_FILES ??
Более того, первое, что бросилось в глаза: imagecreatefromjpeg - создаёт новое изображение из файла или URL.
В качестве аргумента эта функция принимает путь к файлу или URL, но никак не сообщение об ошибке которое выплюнет в него $_FILES['myFile']['tmp_name'].
Первое, что нужно, это проверить, что приходит. Закоментируйте весь ваш скрипт.
А содержание этих двух переменных попытайтесь записать в лог или просто в txt.
Посмотрите, что там получится.
На самом деле не очень понятно, что это такое : var reader = new FileReader();
И вот первый попавшийся мне мануал по этому поводу. Поглядите как реализовано там, массивы POST и FILES вообще не причем, ведь файл целиком вы и не отправляли, так ведь?
Покинул форум
Сообщений всего: 10
Дата рег-ции: Окт. 2011
Помог: 0 раз(а)
HTML5 File Api уже позволяет отправлять средствами ajax файлы на сервер. Более того появилась новая возможность отображать миниатюры загружаемых изображений на сервер (не через iframe), после чего файл или несколько файлов отправляются на сервер через ajax. Это я и пробую сейчас оформить на сайте. На забруговых сайтах уже давно есть готовые скрипты для реализации всего этого, я просто пытаюсь под себя чуть-чуть переделать ну и разобраться конечно же не помешало бы.
Что касается отправки клиентом инфы, а также получения ее на сервер - у меня сомнений нет - отправляется и загружается. А вот, что дальше делать с полученным файлом, я не знаю.
Вроде как вижу 2 пути решения
1. Отправлять с нужной кодировкой (шифрованием, представлением данных), что бы пхп без проблем мог это все съесть
2. Знать что же я загрузил, и дальше пережёвывать это уже на сервере.
grechan
Отправлено: 06 Декабря, 2012 - 00:07:41
Новичок
Покинул форум
Сообщений всего: 10
Дата рег-ции: Окт. 2011
Помог: 0 раз(а)
От FileReader-а все-таки решил отказаться. Решил использовать FormData, и у меня все получилось, хотя реализовать хотел совсем по другому.
Вот этим отправляю
На выходе получилось:
выбор файлов, до их отправки на сервер - отображение в виде миниатюр, с которыми можно делать все, что угодно, а потом отправка их сервер.
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.