当我尝试使用http.request
编写方法并将fs.createReadStream()
导入req时,文件已上传,但内容不完整
我的代码如下:
```
var req = http.request(options, function(res) {
res.setEncoding('utf8');
res.on('data', function (chunk) {
if(chunk) {
resData += chunk;
}
});
res.on('end', function() {
callback(null, {
statusCode: res.statusCode,
headers: res.headers,
data: resData
});
});
});
req.on('errer', function() {
console.log('error');
});
// judge if the data params is a path string or raw data
if(data) {
if(fs.existsSync(data)) {
fs.createReadStream(data).pipe(req);
} else {
req.write(data);
}
};
req.end();
```
在我放入的服务器中,我发现文件已上传但不完整。
答案 0 :(得分:0)
将结束部分(在以`// judge``开头的评论之后)移到' end'监听器。
答案 1 :(得分:0)
根据此处发布的代码,您正在创建一个全局变量resData,当另一个请求发出时,它不会被重置。
您需要在回调函数中定义变量,以便您的函数如下所示:
var req = http.request(options, function(res) {
//Initialize resData here
var resData = '';
res.setEncoding('utf8');
res.on('data', function (chunk) {
if(chunk) {
resData += chunk;
}
});
res.on('end', function() {
callback(null, {
statusCode: res.statusCode,
headers: res.headers,
data: resData
});
});
});
//I think you had a typo here
req.on('error', function() {
console.log('error');
});