如何以编程方式上传node-webkit / nw.js中的文件

时间:2016-10-27 05:29:23

标签: javascript node-webkit nw.js

我使用node-webkit / nw.js作为自动化工具来测试我的Web应用程序。 我的应用程序具有记录模式以捕获所有单击事件和键盘事件。 所有捕获的事件都会记录到文件中,而在播放模式下,记录的事件将从干净状态运行。

但是,由于文件上传打开了“文件”对话框,我无法模拟文件选择。由于我使用node webkit,我可以通过编程方式从用户系统读取文件,并使用FormDataBlob将其作为blob上传。但是,根据文件上传,有些事件必须被触发,并且在上传完成后,其他字段必须用图像填充说明。

有没有办法可以通过编程方式在表单数据中附加文件? 我可以理解它在普通浏览器中是不可能的,因为它会是一个安全问题。在节点webkit环境中,我无论如何都能够在后台访问和上传用户文件。那么,是否可以修改输入文件值或通过其他方式在Form中添加blob并上传文件?

1 个答案:

答案 0 :(得分:0)

似乎所涉及的步骤在nw.js的github页面中详细阐述,但不在docs上详细说明。

获取表单节点和输入节点的引用的步骤。

//Detect if button clicked is inside a form. 
//In my case all attachments use same component. So I know the no. of levels to move up
if(activeElm.parentNode.parentNode.parentNode.tagName=="FORM"){
    //Navigate to input elm and save it as new activeElm. 
    //Navigation will differ based on your page.
    activeElm = activeElm.parentNode.parentNode.parentNode.getElementsByTagName('input')[0];
}

模拟文件附件的步骤。

var f = new File('/path/to/file', 'name');
 var files = new FileList();
 files.append(f);
 elm.files = files;