Работа с загруженными файлами
Здравствуйте! Тема такая: добавляем товар. Реализуем примерно так.
<input type='file'> выбираем файл с компьютера. В поле <input type='text'> пишем название товара. Нажимаем на <input type='submit'> и что происходит дальше?? По какому адресу будет доступна загруженная картинка? Как мне потом в другом месте DOM отобразить эту картинку (какой scr нужно указывать для img чтобы отобразить загруженную картинку)? P.S. Хочу чтобы эта загруженная картинка отображалась на странице и после обновления страницы, тоесть её URL запишим в некий JSON файл, из содержимого которого будут показываться все img на странице. |
Цитата:
Цитата:
|
тоесть надо знать NodeJS? или как сделать серверный скрипт?
можно лёгенький пример? |
Цитата:
В РНР все просто - файлы пришедшие формой загружаются во временную папку как временные файлы, описание которых содержит суперглобальный массив $_FILES, и обрабатывая который перемещают загруженные файлы в определенный каталог. Изображения можно при этом и обработать, например библиотекой GD или, если имеется на сервере, ImageMagick. NodeJS я не занимаюсь, что он имеет в своем распоряжении для данных операций сказать не могу. |
Цитата:
Адресом запроса по умолчанию является текущий. То есть если в action="" то пойдет на тот адрес, который в строке браузера. Если указано явно - по указанному. По указанному адресу должен быть заранее подготовленный скрипт или программа, которые понимают что пришло и что с этим делать. ТС, с твоим уровнем проще скачать готовое или заказать, если у тебя вообще сервер есть. |
я только учусь. Никак не освою XMLHttpRequest особенно POST метод...сам то я не тупой, но тут чёто недоходит
Форма обязательна? я не могу сделать к примеру так? var xmlhttp = new XMLHttpRequest(); var b = {"name":"Vasya","age":98}; xmlhttp.open('POST', 'user.json', false); xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); xmlhttp.send(b); чтобы в имеющийся JSON файл добавить объект b |
Для метода post форма не обязательна, но без нее задолбаешься все собирать, а как там без формы с файлами обходились я даже проверять не стану. Просто сделай новый объект формы и втыкай туда чего угодно.
Например var el=D.getElementById("import-file"), x = new XMLHttpRequest(), f = new FormData(); f.append(el.name, el.files[0], el.value); x.open("POST",url); x.onreadystatechange=function(){/* и тут уже калбек */ x.setRequestHeader("X-Requested-With","XMLHttpRequest"); x.send(f); С текстовыми данными такой же аппенд, почитай про FormData PS Напомню что контекст был закачать файло. |
всем спасибо. суть понял. осталось выучить backend
|
Цитата:
То что по последнему вопросу - форма не обязательна. Не зная Node.js ничего не могу сказать про передачу непосредственно объекта, но что-то подсказывает, что что-то не так. Но дело даже не в этом. Можно изучать любой язык, знать его безупречно, но вот воспользоваться им не уметь. Изучая язык, учитесь сразу ставить задачи, в уже в них находить пути решения используя язык. К примеру (о чем я не стал говорить сразу): Хочу чтобы эта загруженная картинка отображалась на странице и после обновления страницы, тоесть её URL запишим в некий JSON файл, из содержимого которого будут показываться все img на странице. - выделенное красным совсем не нужно. Если понимать задачу, а значит планировать и понимать хранение данных, то "этого не нужно" обязательно станет понятным. Просто попробуйте представить все это мысленно, не вникая в языки программирования. |
laimas, хватит народ пугать. Записать файл на сервер через веб-интерфейс - это самое интересное с чем сталкивается начинающий кодер. Всякие там текстики - это не впечатляет, а когда закачал файл и он бамц и появился на публике как тумба и она еще и открывается - это прикольно.
На всякий случай пример транспозинга на все случаи жизни переменной с файлами. $files=array(); foreach($_FILES as $field=>$values) foreach($values as $index=>$value) if(is_array($value)) foreach($value as $i=>$v) $files[$index][$i][$field]=$v; else $files[$index][0][$field]=$value; |
Часовой пояс GMT +3, время: 12:53. |