在Javascript中使用ADODB.Stream访问附加文件内容

在Javascript中使用ADODB.Stream访问附加文件内容,javascript,jquery,html,backbone.js,Javascript,Jquery,Html,Backbone.js,我有一个Backbone.js项目正在工作,在那里我得到一个用户附加在表单中的文件(html模板中名为files的输入元素),并将内容分配给主干模型(而不是直接发送文件) 它使用FileReader在Chrome和Firefox上运行良好: var file_list = $('#device_file').prop('files'); var file_object = file_list[0]; reader = new FileReader(); reader.onload = funct

我有一个Backbone.js项目正在工作,在那里我得到一个用户附加在表单中的文件(html模板中名为files的输入元素),并将内容分配给主干模型(而不是直接发送文件)

它使用FileReader在Chrome和Firefox上运行良好:

var file_list = $('#device_file').prop('files');
var file_object = file_list[0];
reader = new FileReader();
reader.onload = function(event) {
                var contents = event.target.result;
                self.model.set("file_data", contents);
                self.model.set('_completed', true);
                self.onStartImport();
            };
reader.readAsBinaryString(file_object);
但现在我需要使它与旧版本的Internet Explorer兼容。IE10部分支持FileReader,但旧版本不支持

我曾尝试使用ActiveX对象,如ADODB.Stream,但我遇到的问题是,如果没有完整的文件路径(出于安全原因,该路径似乎是隐藏的),我无法访问文件内容以将其分配给所需的模型属性。我可以得到文件名,但不能得到路径

我能想到的唯一解决办法是,让IE用户把要上传的文件放在一个“已知”文件夹中,比如“C:\MyAppName\Files”或类似的文件夹中,但这感觉是错误的


任何建议都非常感谢:-)

最后我意识到,在IE上,您实际上可以获得附加文件的完整路径(在Chrome中,您可以获得一个假路径)。这就解决了我在IE中的问题:

var fileName = $('#device_file').val();
var fso = new ActiveXObject("Scripting.FileSystemObject");
var f = fso.OpenTextFile(fileName, 1);
var raw_content = f.ReadAll();
self.model.set("file_data", raw_content);
当然,我添加了一些功能检测来使用FileReader(如果有的话)(从真正的浏览器)