Я создал двоичный файл следующим образом (чтобы убедиться, что все возможные значения байтов в бинарном файле):Почему я могу использовать FileSystemObjects для чтения и записи двоичных файлов на стороне клиента, но не для чтения и отправки их на сервер?
using (var fs = File.Create(fileName))
{
for (byte b = 0; b < Byte.MaxValue; b++)
{
fs.WriteByte(b);
}
}
и я прочитал его таким образом (для тестирования, что он работает):
using (var fs = File.Open(fileName, FileMode.Open))
{
long oldPos = -1;
long pos = 0;
while (oldPos != pos)
{
oldPos = pos;
Console.WriteLine(Convert.ToString(fs.ReadByte(), 2).PadLeft(8, '0'));
pos = fs.Position;
}
}
в JavaScript в IE, копирования файла (чтение его, а затем писать его обратно) отлично работает при использовании FileSystemObject
:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var from = fso.OpenTextFile(fileToRead, 1, 0); // read, ASCII (-1 for unicode)
var to = fso.CreateTextFile(fileToWriteTo, true, false);
while (!from.AtEndOfStream) {
to.Write(from.Read(1));
}
from.Close();
to.Close();
Когда я прочитал выдаваемого двоичный файл, я получаю 00000000,00000001,00000010 ... и т.д.
Но попытка прочитать его в JavaScript, кажется, вызывает отказ следующим образом:
var fso = new ActiveXObject("Scripting.FileSystemObject");
var from = fso.OpenTextFile(fileToRead, 1, 0);
var test = [];
while (!from.AtEndOfStream) {
test.push(0xff & from.Read(1)); // make it a byte.
}
from.Close();
, что приводит к испытанию с букетом 0 в его массиве и несколькими другими ненулевыми элементами, но в основном всего 0.
Может кто-нибудь объяснить, почему это работает для одного, а не для другого? Что мне нужно сделать, чтобы получить значения в javascript?
Кстати, here is a related read on reading files off the client machine:
Как читать и конвертировать в шестнадцатеричный? – Cobaia