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

How to programmatically upload file in node-webkit / nw.js

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

但是,由于文件上传会打开一个文件对话框,我无法模拟文件选择。由于我使用的是 node webkit,我可以以编程方式从用户系统读取文件并使用 FormDataBlob 将其作为 blob 上传。但是,基于文件上传,有些事件必须触发,上传完成后其他字段必须填充图片。

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

nw.js 的 github 页面似乎详细说明了所涉及的步骤,但文档中没有。

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

//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;