使用第三方包node-formidable,需要通过Node.js的包管理NPM来安装外部包,我们已安装好的Node.js环境一般都已经默认把NPM安装到机器上,我们可以在cmd下通过命令行在NPM中安装formidable包:
npm install formidable
如下截图,成功安装formidable包:
我们可以通过formidable的官方demo来了解一下这个包是如何引入和使用的:
- var formidable = require('formidable'),
- http = require('http'),
- sys = require('sys');
- http.createServer(function(req, res) {
- if (req.url == '/upload' && req.method.toLowerCase() == 'post') {
- // parse a file upload
- var form = new formidable.IncomingForm();
- //这里formidable会对upload的对象进行解析和处理
- form.parse(req, function(err, fields, files) {
- res.writeHead(200, {'content-type': 'text/plain'});
- res.write('received upload:\n\n');
- res.end(sys.inspect({fields: fields, files: files}));
- });
- return;
- }
- // show a file upload form
- res.writeHead(200, {'content-type': 'text/html'});
- res.end(
- '<form action="/upload" enctype="multipart/form-data" '+
- 'method="post">'+
- '<input type="text" name="title"><br>'+
- '<input type="file" name="upload" multiple="multiple"><br>'+
- '<input type="submit" value="Upload">'+
- '</form>'
- );
- }).listen(8888);
如果我们要做一个上传图片并预览的功能,需要做以下几点:
- 通过formidable在start表单中添加一个文件上传元素(添加一个multipart/form-data的编码类型,移除此前的文本区,添加一个文件上传组件)
- 在form.parse中处理上传的文件保存到本地,再输出到html上面。
当然一个上传功能包的使用并不是官方Demo说的那么简单,我们可以在WebStorm中看到node-formidable包的组成结构以及其内部函数,IncomingForm结构图如下:
建议大家学习node-formidable前,先参照下面两篇文章: