使用请求库将文件从服务器流式传输到electron / angular2客户端

时间:2017-04-28 19:10:42

标签: angular restify npm-request

我正在使用angular2和electron创建一个桌面应用程序。 此客户端需要使用request库从服务器下载zip文件。

能够下载文件只是第一步,客户端应用程序还需要能够将zip文件推送到服务器。比较下这个例子使用下面的例子有多容易,我不明白是什么阻止了这个。

为了让fs和路径库在电子工作,我必须在index.html中做一些解决方法。此解决方法目前正在运行,我可以使用fs:

在我的文件系统中创建文件夹
 <script>
   window.fs = require("fs");
   window.path = require("path");
 </script>

代码

服务器

const restify = require('restify');
const server = restify.createServer();
const fs = require('fs');

server.post('/download', function(req, res) {
  fs.createReadStream("C:\\test\\test.zip").pipe(res);
});

server.listen(1338, function() {
  console.log('server started up on port 1338');
});

工作客户

let request = require("request");
let path = require("path");
let fs = require("fs");

request.post("http://localhost:1338/download").on("response", (response) => {
    let zipLocation = path.join("/test", "response.zip");
    let writeStream = fs.createWriteStream(zipLocation);

    writeStream.on("finish", () => {
        console.log("finished");
    }).on("error", (err) => {
        console.log("err: ", err.message);
    });

    response.pipe(writeStream);
}).on("error", (err) => {
    console.log("req err: ", err.message);
});

但是当我将这个客户端代码引入angular2电子应用程序时。我收到一个错误:

err:  Invalid non-string/buffer chunk

我的角度应用程序中包含请求库,如下所示:

import * as request from 'request';

此问题可能与请求库相关联。在响应中没有标题。但我无法肯定地说

response.headers // is a empty object: {}

有人能告诉我为什么我无法将文件从服务器传输到运行电子应用程序的文件系统的原因吗?

更新:

尝试实施文件上传后,我遇到了同样的错误:

Invalid non-string/buffer chunk

0 个答案:

没有答案