我们使用form和input控件向服务器上传文件,服务器使用Node.js应用接收客户端上传的文件.您可以使用多方库文件来解析客户端提交的本地文件。完整的源代码如下图所示:varmultiparty=require('multiparty');varhttp=require('http');varutil=require('util');constPORT=3003;http.createServer(function(req,res){if(req.url==='/upload'&&req.method==='POST'){//解析文件上传varform=newmultiparty.Form();form.parse(req,function(err,fields,files){res.writeHead(200,{'content-type':'text/plain'});res.write('receivedupload:\n\n');res.end(util.inspect({fields:fields,files:files}));});return;}//显示文件上传表单res.writeHead(200,{'content-type':'text/html'});res.end(''+'
'+'
'+''+'');}).listen(PORT);console.log('listenonport:'+PORT);文件上传的具体实现:使用HTML标准form标签,actionvalue为/upload,在Node.js应用中会再次使用,enctype为multipart/form-data:使用input控件,属性指定为file,multiple属性为multiple,支持多文件上传。一旦我在浏览器中输入http://localhost:3003/后,就会触发如下断点:提示有新的客户端连接到达:此时在createServer中的回调函数中,req的类型为IncomingMessage,而url字段的值为/:此时返回一个文件上传网页给客户端:如下图:选中两个文件后,点击上传你的文件:此时url变为/upload指定在form中,方法变为POST:executeform.parse注册回调函数,注意这个回调函数不会立即执行。之后,当两个本地文件的数据流全部上传到服务器时,异步触发注册的回调函数:在这个回调函数中,req对象已经不可用了,只能访问res(ServerResponse)等字段,error,fields,files:我们在title字段输入Jerry123后,点击上传按钮:可以从fields字段获取title内容,从files字段获取上传文件的文件名和大小,和本地绝对路径: