我正在使用 angular2 和电子创建桌面应用程序。此客户端需要使用请求库从服务器下载 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
我的 Angular 应用程序中包含了请求库,如下所示:
import * as request from 'request';
此问题可能与请求库有关。在来自没有标题的响应中。但我不能肯定地说
response.headers // is a empty object: {}
谁能告诉我为什么我无法将文件从服务器流式传输到运行电子应用程序的文件系统?
更新:在尝试实现文件上传后,我得到了同样的错误:
Invalid non-string/buffer chunk