《Nodejs入门》一书中存在的问题分析[转]
要和上一篇转载一起看。
《Nodejs入门》一书确实很好的入门工具书,不过其中的一些代码还是和我们的实际开发环境不同。比如该书中的最后一个例子,上传图片到服务器。
其中存在的问题的一部分源代码如下(处理上传文件):
Js代码
function upload( res, req){ console.log("request upload mehtod"); var form = new formidable.IncomingForm(); form.parse( req, function( error, fields, files){ fs.renameSync(files.upload.path, "tmp/"+filename+".png"); res.writeHead(200,{"Content-Type":"text/html"}); res.write("<img src='/show'/>"); //发送/show请求 res.end(); });
}
这里用到了formidable第三方模块,上面的代码总是报错“can not find File or Directory: c:......”;
原因是formidable默认上传文件的保存路径与项目路径不在同一相同路径中。如我的工程是在e盘。所以需要设置form.uploadDir = "tmp";//指向工程中的tmp文件夹
另外,fs.renameSync()保存文件会抛出异常,为了能让程序正常运行,这里需要添加try{}catch(e){}
如果我们像上传图片的同时,想在前台的一个输入框内设置一下名称,后台通过formidable如何获取这个字段的值呢?
Js代码
...
form.parse(req, function(error, fields, files){ //filename为<input>标签中name属相的值 var filename = fields["filename"]; ... });
...
综上所述下面是upload方法完整的代码:
Js代码
function upload( res, req){ console.log("request upload mehtod"); var form = new formidable.IncomingForm(); form.uploadDir = "tmp"; form.parse( req, function( error, fields, files){ console.log("parsing done"); var filename = fields['filename']; console.log("filename = " + filename); try{ fs.renameSync(files.upload.path, "tmp/"+filename+".png"); }catch( e){ console.log(e); }res.writeHead(200,{"Content-Type":"text/html"}); res.write("<img src='/show'/>"); //发送/show请求 res.end(); });
}
《Nodejs入门》一书中存在的问题分析[转]相关推荐
- C专家编程 --- 书中案例汇编与分析(持续更新中)
switch 的 break问题 break语句事实上跳出的是最近的那层循环语句 或 switch语句 下图中蓝色过程的是程序员想实现的执行流程,但是红色过程是实际的执行流程 字符串数组定义时漏掉逗号 ...
- 计算机应届生必读的 AI 入门经典书单
图源来自Pexels 有人说,学AI意味着 30k 打头的月薪,有了"科学家"的虚名,赶上了工业革命的时髦. 但也有人说,这是人工智能撒下的弥天大谎,不然那些工业界的大牛学者为啥都 ...
- nodejs入门_如何在NodeJS中使用套接字创建专业的Chat API解决方案[入门级]
nodejs入门 Have you ever wondered how chat applications work behind the scenes? Well, today I am going ...
- 如果只能从市面上的Python入门书中选择一本送给你,那我一定会选这本……
大家好,欢迎来到Crossin的编程教室!我是Crossin. 今天我要给你们送本书. 这本书,亚马逊评分4.5,豆瓣评分8.5,曾获得2011年JOLT(有"软件业界的奥斯卡"之 ...
- 关于在《python编程从入门到实践》书中练习“外星人大战”报错“AttributeError: ‘AlienInvasion‘ object has no attribute ‘blit‘”
关于在<python编程从入门到实践>书中练习"外星人大战"报错"AttributeError: 'AlienInvasion' object has no ...
- JAVA从入门到精通书中ZIP压缩和解压缩错误修正
本人买了一本Java从入门到精通书籍,学到zip压缩和解压这部分,发现按照书上的代码会出现问题,无法完成压缩和解压缩 首先是压缩原文代码: public static void zip(String ...
- 万字肝完nodejs入门教程,详解入口,建议收藏(更新中)
nodejs入门教程 1.前言 2.入门教程 2.1 命令行运行node.js脚本 2.2 退出node.js程序 2.3 如何使用 Node.js REPL 2.3.1 使用方式 2.3.2 点命令 ...
- NodeJS入门--环境搭建 IntelliJ IDEA
NodeJS入门–环境搭建 IntelliJ IDEA 本人也刚开始学习NodeJS,所以以此做个笔记,欢迎大家提出意见. 1.首先 下载安装NodeJS,下载安装IntelliJ IDEA 2.接下 ...
- 开源!北大研究生把《统计学习方法》书中全部算法都实现了!
来源:开源最前线(ID:OpenSourceTop) 一个好的开源项目分享给大家. <统计学习方法>可以说是机器学习的入门宝典,许多机器学习培训班.互联网企业的面试.笔试题目,很多都参考这 ...
最新文章
- Spring Boot + Vue.js 实现前后端分离(附源码)
- 2020-10-26关于虚拟机中的HWADDR和MACADDR地址
- 学科顶尖!这些高校,“双一流”潜力股!
- GIT的基本操作(建立自己的git远程仓库)
- CSS3实践之路(一):CSS3之我观
- JZOJ 8.15 B组总结
- 垃圾回收算法与实现系列-Java的Class文件详解
- python 移动平均值_python - 如何使用NumPy计算移动平均值? - 堆栈内存溢出
- (转)mahout推荐引擎使用hadoop
- java实现千米与经纬度度数的转换(画圆左右有精度缺失)
- linux db2升级,linux 下 db2 v97 升级到db2 v10.1 实战
- 63.magento 后台重置密码
- 中美线径对照表_电缆里线规AWG的标准是什么?和其他公制如何对照使用?
- JSZip,saveAs压缩保存文件
- 角色权限管理系统(角色功能授权)
- C#,双向链表(Doubly Linked List)归并排序(Merge Sort)算法与源代码
- 错误码errno和perror函数
- asp.net消除锯齿的办法
- wifi mesh 开关
- python输入直角三角形的两直角边,求周长、面积和锐角度数
热门文章
- C语言编程蛟龙转身,[蓝桥杯][2014年第五届真题]排列序数-题解(C语言代码)
- C++语言基础 —— STL —— 容器与迭代器
- 进制转换(洛谷-P1017)
- 火星人(洛谷-P1088)
- 短信计费(信息学奥赛一本通-T1398)
- 27 MM配置-采购-采购申请-定义凭证层的屏幕格式
- mysql mycont,MySQL与DevC++的连接问题
- opencv计算物体姿态旋转_物体的三维识别与6D位姿估计:PPF系列论文介绍(五)...
- python处理json数据 乱码报错_python json.loads json.dumps(ensure_ascii = False) 汉字乱码问题解决...
- pythont提示AttributeError: module ‘scipy.misc‘ has no attribute ‘imsave‘或‘imread‘