繁体   English   中英

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

[英]Access attached file content using ADODB.Stream in Javascript

我有一个Backbone.js项目正在工作,在该项目中,我获得了用户以表单形式附加的文件(在我的html模板中名为file的输入元素),并将内容分配给Backbone模型(而不是直接发送文件)。

使用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(如果有)(从真实的浏览器)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM