`
baiyejianxin
  • 浏览: 160878 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

《Nodejs入门》一书中代码存在的问题

 
阅读更多

《Nodejs入门》一书确实很好的入门工具书,不过其中的一些代码还是和我们的实际开发环境不同。比如该书中的最后一个例子,上传图片到服务器。

 

其中存在的问题的一部分源代码如下(处理上传文件):

 

 

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如何获取这个字段的值呢?

 

 

...
form.parse(req, function(error, fields, files){
    
    //filename为<input>标签中name属相的值
    var filename = fields["filename"];  

     ...

});
...

 

综上所述下面是upload方法完整的代码:

 

 

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基础入门

    这个“nodeJS基础入门”教程很可能是为了帮助初学者掌握 Node.js 的基本概念、语法以及如何与 MySQL 数据库进行交互,从而实现一个简单的个人博客系统。下面将详细阐述 Node.js 的核心特性、模块化开发以及如何结合...

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

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

    NodeJs图书8本

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

    nodejs实现统计项目代码行数的代码资源

    nodejs代码资源,主要用于统计前端项目中的代码行数、空行行数、注释行数、以及注释率,可通过目录或文件以及文件格式进行过滤筛选,统计出想要的代码文件的行数。 资源代码非常简单方便,代码清晰明了,注释也很...

    NodeJs入门文档介绍

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

    最新nodeJS从入门到大神.txt

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

    nodejs2.zip

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

    nodejs开发指南带随书源码

    其次,`node.js开发指南(随书源码).rar`包含了与书中的示例和练习对应的源代码,这些代码可以作为读者动手实践的素材。通过运行和修改这些源码,读者可以更直观地理解书中所讲解的概念和技术,加深对Node.js的理解...

    NodeJS学习笔记和代码

    NodeJS是一种基于Chrome V8引擎的JavaScript运行环境,它允许开发者在服务器端使用JavaScript进行编程。这个"NodeJS学习笔记和代码"的压缩包显然包含了帮助初学者掌握NodeJS基础知识和实践技能的所有必要资料。 ...

    NodeJS入门手册和64bit安装EXE

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

    nodejs七本书帮助学习

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

    《ECMAScript 6 入门》 Javascript nodejs 教程 阮一峰 带书签

    这些只是《ECMAScript 6 入门》教程中涵盖的一部分关键知识点,通过深入学习和实践,开发者可以更好地适应和利用JavaScript的最新特性,编写出更高效、更易于维护的代码。对于想要学习Node.js的开发者来说,理解并...

    nodejs开发实战-源代码

    《node.js开发实战》,2018年1月版,忽如寄著,书中所有示例的代码

    NodeJs开发指南 中文(附随书代码)

    总的来说,《Node.js开发指南》是一本全面、深入的Node.js入门教材,配合随书代码,无论是对初学者还是有一定基础的学习者,都能从中获益匪浅。通过学习,读者不仅可以掌握Node.js的开发技术,还能进一步提升...

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

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

    nodejs调用C++代码

    为了提升性能,开发者有时会采用一种技术,即在Node.js中调用C++代码,这被称为“Node.js的C++扩展”。 标题"nodejs调用C++代码"指的就是这种技术,它允许我们利用Node.js的便捷性和C++的高性能。Node.js提供了一个...

Global site tag (gtag.js) - Google Analytics