如何以编程方式在 node-webkit 中上传文件 / nw.js
How to programmatically upload file in node-webkit / nw.js
我正在使用 node-webkit/nw.js 作为自动化工具来测试我的 Web 应用程序。
我的应用程序有一个记录模式来捕获所有的点击事件和键盘事件。
所有捕获的事件都记录到一个文件中,在播放模式下,记录的事件 运行 来自干净状态。
但是,由于文件上传会打开一个文件对话框,我无法模拟文件选择。由于我使用的是 node webkit,我可以以编程方式从用户系统读取文件并使用 FormData
和 Blob
将其作为 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;
我正在使用 node-webkit/nw.js 作为自动化工具来测试我的 Web 应用程序。 我的应用程序有一个记录模式来捕获所有的点击事件和键盘事件。 所有捕获的事件都记录到一个文件中,在播放模式下,记录的事件 运行 来自干净状态。
但是,由于文件上传会打开一个文件对话框,我无法模拟文件选择。由于我使用的是 node webkit,我可以以编程方式从用户系统读取文件并使用 FormData
和 Blob
将其作为 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;