Уже голову сломал.
Используется 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);
}