0
我在節點JS上比較新。我正在研究從服務器獲取XML文件的應用程序。 總之我想這樣做:從FTP服務器節點JS JSftp獲取二進制數據,返回字符串
- 下載XML的文件和存儲XML的內容作爲 字符串。
- 以純文本的形式將字符串返回給瀏覽器。
我能夠使用jsftp.get將文件下載到本地目錄,但我無法獲取下載的數據作爲字符串。
我在做什麼錯?
我的代碼是這樣的:
var http = require("http");
var url = require("url");
var JSFtp = require("jsftp");
var myStrToReturn = new String();
http.createServer(function(req, res) {
// URL
var parsedUrl = url.parse(req.url, true);
var queryAsObject = parsedUrl.query;
var str = new String();
var myFunction = queryAsObject["function"];
var Ftp = new JSFtp({
host: "ftp.ftp.ftp",
port: 21, // defaults to 21
user: "user", // defaults to "anonymous"
pass: "passwd", // defaults to "@anonymous"
debugMode: true
});
var str = "";
Ftp.get("Production/Offers/datafile.xml", function(err, socket) {
if (err) return;
socket.on("data", function(d) { str += d.toString(); })
socket.on("close", function(hadErr) {
if (hadErr)
console.error('There was an error retrieving the file.');
});
socket.resume();
});
myStrToReturn = str.toString("binary");
res.writeHead(200, {
'Content-Encoding':'utf-8',
'charset' : 'utf-8',
'Content-Type': 'text/plain;charset=utf-8'});
res.write(myStrToReturn.toString());
res.end();
console.log(myStrToReturn);
});
Ftp.on('jsftp_debug', function(eventType, data) {
console.log('DEBUG: ', eventType);
console.log(JSON.stringify(data, null, 2));
});
}).listen(8030);
console.log("Server listening on port 8030");