所以我想做的是,我使用以下参考,借助Formidable Module,使用nodeJS将文件简单地上传到特定文件夹。 File Upload using nodeJS
现在,我的文件已上传到所需的文件夹,但是当我从CLI运行命令时,它给我一个错误
这是我尝试的代码:
var http = require('http') ;
var formidable = require('formidable') ;
var fs = require('fs');
http.createServer(function(req, res){
if(req.url == '/fileUpload'){
var form = new formidable.IncomingForm();
form.parse(req, function(err,fields,files){
var oldpath = files.filetoupload.path;
var newpath = 'C://xampp/htdocs/nodejs/upload/' + files.filetoupload.name;
fs.rename(oldpath, newpath, function (err){
if(err) throw err;
res.write('File Uploaded and Moved !!');
res.end();
});
res.write('File Uploaded');
res.end();
});
}
else{
res.writeHead(200, {'Content-Type': 'text/html'}) ;
res.write('<form action="fileUpload" method = "post" enctype="multipart/form-data">');
res.write('<input type = "file" name="filetoupload" /><br/>') ;
res.write('<input type="submit" />') ;
res.write('</form>') ;
return res.end() ;
}
}).listen(8080) ;
我遇到的错误是:
> Error [ERR_STREAM_WRITE_AFTER_END]: write after end
> at write_ (_http_outgoing.js:572:17)
> at ServerResponse.write (_http_outgoing.js:567:10)
> at C:\xampp\htdocs\nodejs\upload.js:14:8
> at FSReqWrap.args [as oncomplete] (fs.js:140:20) Emitted 'error' event at:
> at writeAfterEndNT (_http_outgoing.js:634:7)
> at process._tickCallback (internal/process/next_tick.js:63:19)
答案 0 :(得分:3)
关闭流后,您正在尝试写信。
var form = new formidable.IncomingForm();
form.parse(req, function(err,fields,files){
var oldpath = files.filetoupload.path;
var newpath = 'C://xampp/htdocs/nodejs/upload/' + files.filetoupload.name;
fs.rename(oldpath, newpath, function (err){
if(err) throw err;
res.write('File Uploaded and Moved !!');
res.end(); // here, remove this end call
});
});