restifyfile upload – 500错误,套接字closures

我使用restify api上传文件。

它给了我一个错误,

{ "code": "InternalError", "message": "This socket is closed." } 

读取的API仍然很好,但无法上传图像。 可能的问题是什么?

我正在使用的代码,

 exports.uploadfile = function (req, res, next) { var file_name = req.files.image.name; var file_name_arr = file_name.split('.'); var imageExtension = file_name_arr.pop(); var imageName = Date.now()+"."+imageExtension; var newPath = process.cwd() + "/images/" + imageName; fs.readFile(req.files.image.path, function (err, data) { fs.writeFile(newPath, data, function (err){ if(err) return next(err); res.json({ image: imageName }) return next(); }); }); } 

挖了一下之后,我find了答案。 上面的代码将整个文件读入内存,然后将其写入缓慢的磁盘中。 而是我已经使用stream媒体来写作像魅力的文件。

用上面的代码replacefs.readfile

 rr = fs.createReadStream(req.files.image.path).pipe(fs.createWriteStream(imagePath)) rr.on('error', function(err){ console.log(error) }); rr.on('finish', function(){ //do ur work here }); 

参考链接: https : //nodejs.org/api/stream.html

其他方法是使用比上面指定的方法更快的fs.rename,因为它根本不需要读取文件。

 fs.rename(req.files.image.path, new_file_path);