为什么我可以使用 FileSystemObjects 来读取和写入客户端二进制文件,而不能用于读取和发送到服务器
Why can I use FileSystemObjects for reading and writing client-side binary files, but not for reading and sending them to the server?
我按以下方式创建了一个二进制文件(以确保所有可能的字节值都在二进制文件中):
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;
}
}
在IE的javascript中,复制文件(读取文件,然后将其写回)在使用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?
顺便说一下,这是从客户端计算机读取文件的相关读取:
首先,你知道最终数组的长度是否与文件的长度相同吗?
尝试在单独的操作中读取和"推送",例如:
...
Test2 = from.Read(1));
// Possibly display value of Test2 as string
test.push(Test2);
...
此外,您可以尝试使用文本数据执行此操作,以查看是否是文件/数据的二进制性质导致了问题。
相关文章:
- 为什么我可以使用 FileSystemObjects 来读取和写入客户端二进制文件,而不能用于读取和发送到服务器
- 为什么这个JavaScript代码不能读取CSV文件
- 为什么我使用 .getJSON 不能始终如一地读取本地 JSON 文件
- 为什么获胜't这个简单的backbone.js应用程序不能持久化并读取到本地存储
- 从公共数组读取时,javascript if语句不能与ifValid一起使用
- 为什么我用PHP设置的cookie不能用Javascript读取
- 未捕获的类型错误:无法读取属性'长度'未定义的(不能是这样!)
- 我得到这个错误“;无法读取属性'getBBox'“为空”;我不能'我不明白为什么
- 不能读取属性'data'Angularjs-无法从模板读取数据到控制器)
- 未捕获类型错误:不能读取属性'translatedText'null "
- 不能读取property 'top'未定义的Ruby on Rails项目
- 不能读取属性'onPageChanged'的定义
- 不能读取property ' rotate '未定义的动力学
- 不能在导航到新页面后读取本地存储
- getElementsByTagName("LI")不能读取属性'innerHTML'
- Fire Key事件从chrome扩展:Uncaught TypeError:不能读取属性'时间'的定义
- 为什么事件监听器不能读取属性
- 不能读取属性'使用querySelector返回null
- 简单的请求:未捕获的类型错误:不能读取属性'长度'的定义
- (NodeJS + Express)服务器不能从html中读取链接的javascript文件