要和上一篇转载一起看。

《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入门》一书中存在的问题分析[转]相关推荐

  1. C专家编程 --- 书中案例汇编与分析(持续更新中)

    switch 的 break问题 break语句事实上跳出的是最近的那层循环语句 或 switch语句 下图中蓝色过程的是程序员想实现的执行流程,但是红色过程是实际的执行流程 字符串数组定义时漏掉逗号 ...

  2. 计算机应届生必读的 AI 入门经典书单

    图源来自Pexels 有人说,学AI意味着 30k 打头的月薪,有了"科学家"的虚名,赶上了工业革命的时髦. 但也有人说,这是人工智能撒下的弥天大谎,不然那些工业界的大牛学者为啥都 ...

  3. nodejs入门_如何在NodeJS中使用套接字创建专业的Chat API解决方案[入门级]

    nodejs入门 Have you ever wondered how chat applications work behind the scenes? Well, today I am going ...

  4. 如果只能从市面上的Python入门书中选择一本送给你,那我一定会选这本……

    大家好,欢迎来到Crossin的编程教室!我是Crossin. 今天我要给你们送本书. 这本书,亚马逊评分4.5,豆瓣评分8.5,曾获得2011年JOLT(有"软件业界的奥斯卡"之 ...

  5. 关于在《python编程从入门到实践》书中练习“外星人大战”报错“AttributeError: ‘AlienInvasion‘ object has no attribute ‘blit‘”

    关于在<python编程从入门到实践>书中练习"外星人大战"报错"AttributeError: 'AlienInvasion' object has no ...

  6. JAVA从入门到精通书中ZIP压缩和解压缩错误修正

    本人买了一本Java从入门到精通书籍,学到zip压缩和解压这部分,发现按照书上的代码会出现问题,无法完成压缩和解压缩 首先是压缩原文代码: public static void zip(String ...

  7. 万字肝完nodejs入门教程,详解入口,建议收藏(更新中)

    nodejs入门教程 1.前言 2.入门教程 2.1 命令行运行node.js脚本 2.2 退出node.js程序 2.3 如何使用 Node.js REPL 2.3.1 使用方式 2.3.2 点命令 ...

  8. NodeJS入门--环境搭建 IntelliJ IDEA

    NodeJS入门–环境搭建 IntelliJ IDEA 本人也刚开始学习NodeJS,所以以此做个笔记,欢迎大家提出意见. 1.首先 下载安装NodeJS,下载安装IntelliJ IDEA 2.接下 ...

  9. 开源!北大研究生把《统计学习方法》书中全部算法都实现了!

    来源:开源最前线(ID:OpenSourceTop) 一个好的开源项目分享给大家. <统计学习方法>可以说是机器学习的入门宝典,许多机器学习培训班.互联网企业的面试.笔试题目,很多都参考这 ...

最新文章

  1. Spring Boot + Vue.js 实现前后端分离(附源码)
  2. 2020-10-26关于虚拟机中的HWADDR和MACADDR地址
  3. 学科顶尖!这些高校,“双一流”潜力股!
  4. GIT的基本操作(建立自己的git远程仓库)
  5. CSS3实践之路(一):CSS3之我观
  6. JZOJ 8.15 B组总结
  7. 垃圾回收算法与实现系列-Java的Class文件详解
  8. python 移动平均值_python - 如何使用NumPy计算移动平均值? - 堆栈内存溢出
  9. (转)mahout推荐引擎使用hadoop
  10. java实现千米与经纬度度数的转换(画圆左右有精度缺失)
  11. linux db2升级,linux 下 db2 v97 升级到db2 v10.1 实战
  12. 63.magento 后台重置密码
  13. 中美线径对照表_电缆里线规AWG的标准是什么?和其他公制如何对照使用?
  14. JSZip,saveAs压缩保存文件
  15. 角色权限管理系统(角色功能授权)
  16. C#,双向链表(Doubly Linked List)归并排序(Merge Sort)算法与源代码
  17. 错误码errno和perror函数
  18. asp.net消除锯齿的办法
  19. wifi mesh 开关
  20. python输入直角三角形的两直角边,求周长、面积和锐角度数

热门文章

  1. C语言编程蛟龙转身,[蓝桥杯][2014年第五届真题]排列序数-题解(C语言代码)
  2. C++语言基础 —— STL —— 容器与迭代器
  3. 进制转换(洛谷-P1017)
  4. 火星人(洛谷-P1088)
  5. 短信计费(信息学奥赛一本通-T1398)
  6. 27 MM配置-采购-采购申请-定义凭证层的屏幕格式
  7. mysql mycont,MySQL与DevC++的连接问题
  8. opencv计算物体姿态旋转_物体的三维识别与6D位姿估计:PPF系列论文介绍(五)...
  9. python处理json数据 乱码报错_python json.loads json.dumps(ensure_ascii = False) 汉字乱码问题解决...
  10. pythont提示AttributeError: module ‘scipy.misc‘ has no attribute ‘imsave‘或‘imread‘