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);
- openshift nodejs应用程序502未指定Access-Control-Allow-Origin
- (Ajax&express js)Express js授权中间件
- 在最新的Openshift更新之后,Socket.IO客户端无法连接到Socket.IO nodejs服务器
- 使用NodeGit CloneOptions克隆分支
- npm在Windows 7上安装“添加caching目录”错误
- 使用node.js,stream和承诺下载文件
- 如何在我的express.js网站(或任何其他特定时间)的每个星期一早上运行脚本?
- Gulp / Node:加载共享库时出错:无法在静态TLS块中分配内存
- 消息:'帐号未被授权调用twilio调用Api