NodeJS和Node-webkit文件上传进度



我正在使用node-webkit创建一个桌面应用程序。该应用程序扫描一个目录并将该目录中的所有文件上传到我的服务器。

我的上传工作正常(我无法让流媒体在服务器端工作,所以只使用 POST)。

这是当前的代码,我正在使用请求库:

var r = request.post("http://myserver.com/upload/");
var upload = fs.createReadStream('path/to/my/file.txt')
var form = r.form();
form.append('new_file', upload);

upload.on("data", function (chunk) {
   upload_progress += chunk.length
})
upload.on("end", function (res) {
    //upload finished
})

我的问题是上传时的"数据"事件不是上传进度,而是从磁盘进度读取文件。我尝试在表单中添加"数据"事件,但结果相同。

基本上,如何将文件上传到我的服务器并将进度报告给用户。

request使用node-form-data来处理表单上传。据我所知,node-form-data没有提供任何进度信息,这意味着我们需要找到一个聪明的解决方法。

node-form-data使用 combined-stream ,看起来像实现了正确的暂停/恢复算法。这意味着,即使node-form-data不支持 Node 0.10 流,如果请求太慢,它仍将暂停其输入流(文件流)。在我看来,查看文件流发送的字节数是 POST 请求状态的足够近似值。

也许尝试使用超级代理而不是request?不确定它是否以不同的方式做事,但值得一试。

相关内容

  • 没有找到相关文章

最新更新