Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   передать содержимое <input type="file" ... > в jquery (https://javascript.ru/forum/jquery/39225-peredat-soderzhimoe-input-type%3D-file-v-jquery.html)

derbass 21.06.2013 13:39

передать содержимое <input type="file" ... > в jquery
 
Доброго времени суток дорогим форумчанам! Вопрос заключается вот в чем. Есть форма, отправка производится с помощью
<a href="javascript:void(0);" onclick="order('manager');return false;">Отправить</a>
. (Т.е. мы нажали, начинается обработка содержимого формы, да и страницы в целом с помощью скрипта, после чего данные передаются в файл-обработчик? send.php к примеру). Как такового события SEND не происходит, данные передаются чеерз скрипт как POST. Строчные и прочие данные передаются отлично! в файле-обработчике легко и просто производить с ними манипуляции, используя POST. Только вот данные
<input type="file" ... >
не передаются, не знаю как вытащить их в jQuery. Спасибо за помощь, простите за сумбур!
P.S. $.post использую вместо submit.

mta88 21.06.2013 13:59

а в элементе <form> стоит enctype="multipart/form-data"?
оно обязательно для отправки файлов
-------------------
P.S. или вы вообще не используете submit() для формы, а используете $.post ?

mta88 21.06.2013 14:51

че-то я туплю, конечно же $.post

в новых браузерах (c новым XMLHttpRequest, их примерно 70%) есть объекты FormData
fd = new FormData()
fd.append('file1', file_input.files[0])
$.ajax({..., data: fd, ...})  --  по другому не нашел как

в старых браузерах без каких-то бредовых хаков не получится (лучше через плагины, не знаю какие)

nyols 21.06.2013 14:59

Отправляйте форму в скрытый Iframe и не парьте себе мозг.

derbass 21.06.2013 15:02

enctype="multipart/form-data" - стоит.

derbass 21.06.2013 15:03

Мне нужно из формы перетащить путь и занвание файла, в Вашем же примере он задан статически, вопрос как раз был в том- как его вытянуть..

derbass 21.06.2013 15:04

Iframe - есть ли похожие примеры? Спасибо!

mta88 21.06.2013 15:36

Цитата:

Сообщение от derbass (Сообщение 257618)
Мне нужно из формы перетащить путь и занвание файла

браузеры не дают стандартно путь файла

что касается названия файла
input_file_element.files // массив файлов элемента формы
input_file_element.files[0].name // имя первого файла

не думал что именно в этом была проблема

derbass 21.06.2013 15:54

Хорошо, все же задам очередной глупый вопрос: каким бразом тогда организовать отправку письма с attachment файлом? или подгрузить ег она сервер? Где-то ведь путь должен браться?
P.S. Прошу простить за глупые вопросы, конечно. Но сам, чисто для себя, сел написал форму с отправкой файла. Пути и имя подтягиваются все же. Но как это все дело засунуть в javascript?

walik 21.06.2013 16:47

Асинхронная загрузка изображений на сервер с помощью скрытого IFRAME

Асинхронная загрузка файлов скрытым iframe

Асинхронная загрузка файлов в скрытом iframe

mta88 21.06.2013 16:57

Цитата:

Сообщение от derbass (Сообщение 257635)
каким бразом тогда организовать отправку письма с attachment файлом? или подгрузить ег она сервер?
...Но как это все дело засунуть в javascript?

:blink:
теперь вообще непонятно, у вас проблемы на сервере или в браузере?
вы пытаетесь отправить из браузера настоящий e-mail? браузер ну никак не способен на такое

derbass 21.06.2013 17:22

Нет, секунду, расскажу чуть подробнее. Есть некий функционал на странице, который прекрасно работает. Формирует заявку. Все необходимые элементы подхватываются с помощью jQuery, обрабатываются и передаются в файл обработчик, где я формирую само письмо, и потом уже с помощью функции mail отправляю.
Хотел расширить функционал на странице, создал форму, добавил туда подгрузку файла (для вложения его в письмо). Все работает, кроме подгрузки файла. т.к. на этап обработки jQuery данные не передаются.

derbass 21.06.2013 17:25

Хорошо, вопрос тогда такой. Как можно организовать загрузку файла на сервер и использования его для вложения в письмо?

derbass 25.06.2013 12:53

Могу предоставить коды, если это необходимо

skrudjmakdak 25.06.2013 22:42

вы что издивайтесь? вам уже столько материала дали.. называется пиши не хочу.. напишите для начала простую отправку файла через FormData. потом дальше будем думать, что и как вам реализовать

derbass 27.06.2013 12:51

Цитата:

Сообщение от skrudjmakdak (Сообщение 258468)
вы что издивайтесь? вам уже столько материала дали.. называется пиши не хочу.. напишите для начала простую отправку файла через FormData. потом дальше будем думать, что и как вам реализовать

Что вы под этим подразумеваете? Просто обычная отправка - есть, я ставил вопрос передачи средством $.post

Deff 27.06.2013 14:18

Как вариант через http://learn.javascript.ru/xhr-forms#formdata

rockerror 01.07.2013 11:49

Есть хороший плагинчик, который инкапсулирует создание iframe и асинхронную отправку файлов. http://www.phpletter.com/Our-Projects/AjaxFileUpload/


Часовой пояс GMT +3, время: 16:16.