Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > XMLHTTPRequest и отправка бинарных данных


Автор: Sartorius 20.4.2010, 13:38
Добрый день. Необходимо из JS отправить POST запрос с бинарными данными. В FF > 3.6 прокатывает такой вариант (Видимо эта версия уже поддерживает FileAPI из HTML 5) 

Код

 function makeHTTPRequest(content)
{
  try { 
 req = new XMLHttpRequest();
 req.open('POST', 'http://localhost', false);
 req.overrideMimeType('text/plain; charset=x-user-defined'); 
 req.setRequestHeader('Content-Length', content.length); 
 req.sendAsBinary(content);
 return req.responseText; 
  } catch (err) {
       return null; }
}


 Нужно, что б в Safari тоже работало. Есть возможность реализовать отправку бинарного контента через POST другим способом?

Автор: IDVsbruck 20.4.2010, 14:43
Стандартно XMLHttpRequest не поддерживает методы overrideMimeType() и sendAsBinary().
Послать бинарные данные стандартными средствами представляется мне возможным только двумя способами:
1. инпут файл со всеми вытекающими
2. контент перегонять в кодировку Base64, отправлять как параметр и на сервере снова перекодировать.

Добавлено через 56 секунд
Кстати, отправка файлов посредством инпут файл также перекодирует содержимое файла в Base64, а на сервере декодирует.

Автор: Sartorius 20.4.2010, 16:17
Спасибо!
Пришлось на самом деле конвертировать в ASCII ((.  
Ждем поддержки FileAPI в чем-нибудь кроме FF smile

Автор: IDVsbruck 20.4.2010, 17:31
Сейчас встречаются люди, не то нубы, не то перфекционисты, которые пытаются поддерживать древние версии Нетскейпа, ИЕ 5.5, а то и ниже и т.д. Думаешь, через 2-5 лет не будет тех, кто будет гнаться за поддержкой ФФ 3.Х, ИЕ7-8 и т.д.? Новый стандарт - это здорово, но нам, программерам, от этого только хуже smile - добавится новый функционал и новая пара костылей.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)