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 :: Загрузка файла без использования формы
Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010 Откуда: Тверь
Помог: 4 раз(а)
Доброго времени суток всем!
Есть такая необходимость загрузить на сервер файл, но проблема в том что делать это надо не через форму. Пользователь вводит множество данных, в том числе выбирает путь к картинке которая должна быть загружена. Жмет кнопку, далее я джавой опрашиваю нужные поля форм и шлю все это ajax на сервер. Облазив интернет нашел технология с iframe, но динамическая загрузка файла мне не нужна, к тому же в каждой строке с данными может быть свой файл. Так вот, как осуществить загрузку этих файлов на сервак. В статье http://xmlhttprequest[dot]ru/#encoding есть интересная строчка:
Цитата:
Возможности XmlHttpRequest позволяют создать запрос с любым телом. Например, можно вручную сделать POST-запрос, загружающий на сервер файл. Функционал создания таких запросов есть, в частности, во фреймворке dojo. Но можно реализовать его и самому, прочитав о нужном формате тела POST и заголовках.
так вот подскажите как можно самостоятельно сформировать тело запроса? логика подсказывает что это можно сделать аналогично вложению в письмо, но для этого надо чтобы был доступ к файлу.
Покинул форум
Сообщений всего: 1459
Дата рег-ции: Авг. 2008 Откуда: Крым
Помог: 11 раз(а)
Slavenin
В любом случае формы + учите html + php и потом javascript - и уже на его основе AJAX
JustUserR
Отправлено: 06 Декабря, 2010 - 00:35:39
Активный участник
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Slavenin пишет:
Есть такая необходимость загрузить на сервер файл, но проблема в том что делать это надо не через форму
Возможность осуществления загрузки требуемого файла на целевой web-сервер без использования формы на пользовательской HTML-старницы - должна обеспечиваться посредством программного доступа к локальной файловой системе в JS-скрипте - и выполнению последующего считывания двоичного содержимого файла с его приведением в соответствующую 7bit-ную форму передачи в соответствии с параметров Content-tranfer-encoding Осуществление указанных действия в явном виде является возможным при использовании браузера Internet explorer и технологии ActiveX - которая позволяет осуществлять заданные программные действия в файловой системе - а также выполнять конвертирование объекта файла средствами компилированных загружаемых компонентов
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Slavenin
Отправлено: 06 Декабря, 2010 - 11:59:10
Посетитель
Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010 Откуда: Тверь
Помог: 4 раз(а)
ALEN пишет:
В любом случае формы + учите html + php и потом javascript - и уже на его основе AJAX
все это я знаю в необходимых пределах.
организовал загрузку через iframe, в ie все работает нормально, а opera отказывается загружать файл.
код формы:
(Добавление)
все победил, тег form был прописан до тега td, почему-то эксплорер это не смущало, а вот опера запротивилась, перенес его и все заработало
всем спасибо за помощь
Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009
Помог: 17 раз(а)
Slavenin пишет:
Организовал загрузку через iframe, в ie все работает нормально, а opera отказывается загружать файл.код формы:
Приведенная вами реализация пользовательского приложения обеспечивает включение в явном виде оригинального бразерного компонента формы посредством его генерации в DOM-модели документа - такой вариант в действительности является оптимальным - однако в качестве его модификации возможно применние предшествующей опережающей обработки контроля загрузки компонента - с целью предотвращения выполнения активной программы в контейнерном элементе которая может оказывывать действенное влияние на текущую HTML-страницу
----- Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
Slavenin
Отправлено: 07 Декабря, 2010 - 21:21:44
Посетитель
Покинул форум
Сообщений всего: 285
Дата рег-ции: Май 2010 Откуда: Тверь
Помог: 4 раз(а)
уважаемый, JustUserR, различные варианты контроля ограничения типов файлов и прочие элементы безопасности я еще не писал, да и реализовывать большую часть из них буду на стороне сервера, так как там возможности их контроля со стороны конечного пользователя крайне ограничены.
Не подскажете почему файл так криво загружается? точнее почему он так загружается я понимаю, проблема в том что сервер не может распознать кодировку имени файла на своей стороне, именно поэтому я включил в код функцию для транслитерации, но так как файл сначала загружается во временную папку на стороне сервера, то его нераспознанное имя меняется с набора кракозябр на цифру 1, вопрос, как моэно избежать подобной ситуации. Я так понимаю, что необходимо послать вместе с формой соответствующий заголовок,
логика подсказывает что имя должно расшифровываться правильно, но этого не происходит. скорее всего потому что форма отправляется через iframe, есть ли возможность отослать заголовок из iframe?
опера dragonfly в добавленном диве выводит следующий текст: <?php header('content-type:=undefined text/html;=undefined charset=utf-8');?> может я неправильно заголовок передаю?
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.