`
pcajax
  • 浏览: 2162241 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

《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入门项目案例(Express+Mysql)

    NodeJS入门项目案例(Express+Mysql)是一个适合初学者的教程,旨在引导你进入Node.js服务端开发的世界。在这个项目中,我们将使用Express框架,一个简洁且强大的Web应用开发框架,以及Mysql,一个流行的开源关系型...

    Nodejs 入门

    Nodejs的入门教程的示例,没有错误的地方,可以方便的找到自己有什么错误的

    Nodejs入门经典

    总结来说,"Nodejs入门经典"是一份针对Node.js初学者的宝贵资源,它涵盖了Node.js的基本概念、核心模块以及实际应用场景。配合源代码学习,能帮助读者快速上手并进阶到更高级的Node.js开发。无论你是Web开发者还是对...

    NodeJs图书8本

    6. **文件系统操作**:Node.js提供了丰富的API用于操作文件系统,这在《node.js开发指南》和《NodeJs入门》中会进行详细讲解。 7. **流(Stream)**:Node.js中的流是处理大量数据的有效方式,适用于读写大文件或网络...

    NodeJs入门文档介绍

    NodeJs入门学习文档,对于新手刚接触NodeJs有一定的帮助

    nodejs(一、二、三、四、五)入门源代码.zip

    nodejs(一、二、三、四、五)入门源代码,对应分类:https://blog.csdn.net/zengraoli/category_10327904.html ...nodejs入门(一)、nodejs入门(二)、nodejs入门(三)、nodejs入门(四)、nodejs入门(五)

    nodejs七本书帮助学习

    nodejs七本书帮助学习:《Node+Web开发》、《Node,+Up+and+Running》、《Node.js+开发指南》、《NODE.js入门手册》、《Node+Web开发》、《Node入门》、《深入浅出Node.js》

    nodejs2.zip

    nodejs入门到实战(一、二、三)源代码,对应分类:https://blog.csdn.net/zengraoli/category_10327904.html 中的文章 nodejs入门到实战(一)、nodejs入门到实战(二)、nodejs入门到实战(三)

    NodeJS入门手册和64bit安装EXE

    NodeJS是一种基于Chrome V8引擎的JavaScript运行环境,它的出现使得JavaScript可以被用于服务器端编程,打破了以往JavaScript只能在浏览器中执行的限制。本压缩包包含了一份NodeJS入门手册(NODE.js入门手册.pdf)和...

    最新nodeJS从入门到大神.txt

    2019最新nodeJS从入门到大神.txt----------百度云盘下载地址

    typescript使用nodejs实现简繁体转换

    typescript使用nodejs实现简繁体转换,可以转换子文件夹, 运行方式:将文件复制到工程的files文件夹,运行node app.js "" s2t(简体转繁体)或node app.js "" t2s(繁体转简体)即可

    NodeJs思维导图总结

    NodeJs思维导图总结

    NodeJS中文文档精编.pdf 全文免费

    在 NodeJS 中,一个文件就是一个模块(这个文件可能是 JavaScript 代码、JSON 或者编译过的 C/C++ 扩展等等)。模块化的好处是避免命名冲突(减少命名空间污染),更好的分离、按需加载、更高复用性、高可维护性。 ...

    moneyjs是一个货币转换的微型javascript库可在nodeJS和浏览器中使用

    money.js 是一个货币转换的微型 javascript 库,可在 nodeJS 和浏览器中使用

    NodeJS入门项目案例(Express+Mysql)服务端开发.zip

    在"NodeJS入门项目案例(Express+Mysql)服务端开发.pdf"文件中,你将找到详细的步骤指导和代码示例,帮助你一步步完成整个项目。这个项目不仅涵盖了基础的NodeJS服务端开发,还涉及到数据库操作和RESTful API设计,...

    Node.js-这是一个nodejs库可以把一个多页的pdf转成多页png图片

    标题中的“Node.js-这是一个nodejs库可以把一个多页的pdf转成多页png图片”表明了这个项目是一个基于Node.js的库,其主要功能是将PDF文档转换为多个PNG图像,每一页PDF对应一张PNG图片。这样的工具在需要对PDF进行...

    Node初学者入门 , 一本全面的NodeJS 教程

    Node初学者入门 , 一本全面的NodeJS 教程,Manuel Kiessling著

    (完整word版)Nodejs学习文档整理.pdf

    Node.js 是一种基于 Chrome V8 引擎的 JavaScript 运行环境,设计用于构建可扩展的网络应用。它的主要特点是异步非阻塞I/O和事件驱动,使得它在处理高并发请求时表现优异。 1. **问题背景** - 在传统的服务器程序...

    【nodeJs入门】第3篇:域名绑定服务器IP

    这一次并不是讲nodejs的,有点跑偏了,但是都是为小程序搭建后台做的准备。先说下缘故,在小程序内开启的websoket服务在真机上测试一直报错,找了几篇文档,首要确定的是端口和ssl是否有问题。因为ssl是用Linux的ope...

Global site tag (gtag.js) - Google Analytics