Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как отправить файл через XMLHttpRequest как мультипарт (https://javascript.ru/forum/misc/13776-kak-otpravit-fajjl-cherez-xmlhttprequest-kak-multipart.html)

KOLANICH 13.12.2010 13:28

как отправить файл через XMLHttpRequest как мультипарт
 
как отправить файл через XMLHttpRequest как multipart/data

Kolyaj 13.12.2010 13:36

Файл с диска пользователя? Никак.

Skipp 13.12.2010 13:38

Вот может поможет

KOLANICH 13.12.2010 13:49

Цитата:

Сообщение от Kolyaj (Сообщение 83617)
Файл с диска пользователя? Никак.

1 файл с диска послать можно: для этого есть апи
2 у меня файл в переменной
бинарный файл
Цитата:

Сообщение от Skipp
Вот может поможет

тут приём инфы, мне нужно послать

Kolyaj 13.12.2010 13:55

Цитата:

Сообщение от KOLANICH
1 файл с диска послать можно: для этого есть апи

Некроссбраузерное api, для которого всё равно нужен input type="file".

Цитата:

Сообщение от KOLANICH
2 у меня файл в переменной

Если содержимое файла в переменной, то формируйте запрос соответствующим образом. Можно почитать RFC, можно посмотреть примеры. Например, в Zend есть, по моему, такая функциональность. Можно посмотреть, как там запрос формируется.

KOLANICH 13.12.2010 14:06

а если я укажу миме-тип multipart/form-data , то автоматом запрос составит?

Kolyaj 13.12.2010 14:17

Нет, конечно. Нужно сформировать соответствующим образом строку, передаваемую в метод send объекта XMLHttpRequest.

KOLANICH 13.12.2010 14:41

ясно
поскольку библиотеки для этого в инете не нашёл (зато нашёл пример реализации), то напишу свою

B@rmaley.e><e 13.12.2010 15:40

http://javascript.ru/blog/Brmaley.ee...pravlyaem-fayl

KOLANICH 13.12.2010 20:25

я это уже видел
работает в 4м файрфоксе, а он - бета

B@rmaley.e><e 13.12.2010 21:24

Оно работает еще и в FF 3.6 (И, возможно, более ранних версиях).
А в Chrome 6+ (или 7+, не знаю точно) достаточно использовать FormData.

KOLANICH 13.12.2010 22:10

у меня - 3.6.13 , а не работает
Цитата:

Introduced in Gecko 2.0
(Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1)

Kolyaj 13.12.2010 22:34

KOLANICH,
если у вас содержимое файла уже лежит в переменной, так вырежьте из того примера всё, что касается чтения файла, и будет работать во всех браузерах.

KOLANICH 13.12.2010 22:44

я так и сделал
даже больше - класс написал

B@rmaley.e><e 13.12.2010 23:30

Цитата:

Сообщение от Kolyaj
и будет работать во всех браузерах.

Неправда. Обычный XHR не умеет передавать бинарные данные (Но хром с недавних пор умеет). Можно закодировать их в base64, но тогда придется декодировать на стороне сервера. Content-Transfer-Encoding не помогает.
Цитата:

Сообщение от KOLANICH
у меня - 3.6.13 , а не работает

3.6.12, работает.

KOLANICH 14.12.2010 16:14

в огнелисе - можно
в огнлисе даже есть кроссдоменные запросы
правда сайт-получатель должен содержать специальный скрипт

B@rmaley.e><e 14.12.2010 18:25

В огнелисе для этого даже есть специальный метод.

KOLANICH 14.12.2010 19:02

метод-то обычный,
просто в объекте надо свойство withCredentials поставит в тру

https://code.google.com/p/js-multipart-data/ - вот библиотечка


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