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");