追忆-php

追求内心的非常平静!瞬间清空所有的杂念,达到物我两忘!

学习node-formidable

使用第三方包node-formidable,需要通过Node.js的包管理NPM来安装外部包,我们已安装好的Node.js环境一般都已经默认把NPM安装到机器上,我们可以在cmd下通过命令行在NPM中安装formidable包:

npm install formidable

    
     如下截图,成功安装formidable包:

 
    我们可以通过formidable的官方demo来了解一下这个包是如何引入和使用的:
  1. var formidable = require('formidable'),  
  2.     http = require('http'),  
  3.     sys = require('sys');  
  4.   
  5. http.createServer(function(req, res) {  
  6.     if (req.url == '/upload' && req.method.toLowerCase() == 'post') {  
  7.         // parse a file upload  
  8.         var form = new formidable.IncomingForm();  
  9.   
  10.         //这里formidable会对upload的对象进行解析和处理  
  11.         form.parse(req, function(err, fields, files) {  
  12.             res.writeHead(200, {'content-type': 'text/plain'});  
  13.             res.write('received upload:\n\n');  
  14.             res.end(sys.inspect({fields: fields, files: files}));  
  15.         });  
  16.         return;  
  17.     }  
  18.   
  19.     // show a file upload form  
  20.     res.writeHead(200, {'content-type': 'text/html'});  
  21.     res.end(  
  22.         '<form action="/upload" enctype="multipart/form-data" '+  
  23.             'method="post">'+  
  24.             '<input type="text" name="title"><br>'+  
  25.             '<input type="file" name="upload" multiple="multiple"><br>'+  
  26.             '<input type="submit" value="Upload">'+  
  27.             '</form>'  
  28.     );  
  29. }).listen(8888);  


    如果我们要做一个上传图片并预览的功能,需要做以下几点:
  • 通过formidable在start表单中添加一个文件上传元素(添加一个multipart/form-data的编码类型,移除此前的文本区,添加一个文件上传组件)
  • 在form.parse中处理上传的文件保存到本地,再输出到html上面。

   当然一个上传功能包的使用并不是官方Demo说的那么简单,我们可以在WebStorm中看到node-formidable包的组成结构以及其内部函数,IncomingForm结构图如下:
 
    
 
   建议大家学习node-formidable前,先参照下面两篇文章:

posted on 2013-11-27 10:48  追忆-php  阅读(546)  评论(0编辑  收藏  举报

导航