Показать сообщение отдельно
  #1 (permalink)  
Старый 24.03.2012, 12:55
Новичок на форуме
Отправить личное сообщение для oleg40 Посмотреть профиль Найти все сообщения от oleg40
 
Регистрация: 24.03.2012
Сообщений: 3

ActiveX FileSystemObject - проблемы с чтением бинарного файла и отправкой
Уже голову сломал.
Используется ActiveX FileSystemObject в IE.
Нужно прочитать файл на клиенте и передать его содержимое.
Всё круто когда обычные файлы.
Когда же бинарные файлы то он ерунду мне отправляет (не понимает чтоли некоторые символы и вместо них нули), причем длина пост-запроса каждый раз разная.

Скажите, реально ли вообще такое проворачивать - если да то как - если нет то почему???
Умеет ли вообще javascript работать с бинарными данными???

Пользуюсь таким кодом:

function readFile(input)
{
	var fs = new ActiveXObject("Scripting.FileSystemObject");
	var file = fs.GetFile(input.value);
	var stream = file.OpenAsTextStream(1, 0);
	var content = stream.ReadAll();
	stream.Close();
	return content;
}

function send(url, inputName, filename, content, callBack)
{
	var boundary = "xxxxxxxxx";

	var body = "--" + boundary + "\r\n";
	body += "Content-Disposition: form-data; name=\"" + inputName + "\"; filename=\"" + filename + "\"\r\n";
	body += "Content-Type: application/octet-stream\r\n\r\n";
	body += content + "\r\n";
	body += "--" + boundary + "--";

	var req = new XMLHttpRequest();
	req.open("POST", url, true);
	req.setRequestHeader("Content-Type", "multipart/form-data; boundary=" + boundary);
	req.onreadystatechange = function ()
	{
		if (req.readyState == 4)
			if (req.status == 200)
				if (callBack)
					callBack();
	};

	req.send(body);
}
Ответить с цитированием