您的位置:首页 > Web前端 > Node.js

node.js connect 实现文件上传

2012-01-05 23:05 726 查看
上次博客node.js+android(使用HttpURLConnection和HttpClient)实现文件上传,使用的是formidable,上篇博客介绍了node.js
connect 安装、介绍与实例,那就用connect写一个上传的例子。

主程序代码如下,保存为bodyParser.js,放在敲安装命令的目录下:

var connect = require('connect');

var app = connect()
.use(connect.static(__dirname + '/public'))
.use(connect.bodyParser({uploadDir:__dirname +'/file',keepExtensions:true}))
.use(connect.logger())
.use(function(req, res, next){
if ('GET' != req.method) return next();
res.statusCode = 302;
res.setHeader('Location', 'form.html');
res.end();
})
.use(function(req, res){
res.setHeader('Content-Type', 'text/html');
res.write('<p>thanks ' + req.body.name + '</p>');
res.write('<ul>');
console.log(req.body);
console.log(req.files);

if (Array.isArray(req.files.images)) {
req.files.images.forEach(function(image){
var kb = image.size / 1024 | 0;
res.write('<li>uploaded ' + image.name + ' ' + kb + 'kb</li>');
});
} else {
var image = req.files.images;
var kb = image.size / 1024 | 0;
res.write('<li>uploaded ' + image.name + ' ' + kb + 'kb</li>');
}

res.end('</ul>');
});

app.listen(8080);
console.log('Server started on port 8080');
静态文件form.html代码如下,放在bodyParser.js同级的public文件夹下:

<html>
<body>
<form action="/" method="post" enctype="multipart/form-data">
<input type="text" name="name" placeholder="Name:" />
<input type="file" name="images" multiple="multiple" />
<input type="submit" value="Upload" />
</form>
</body>
</html>
代码比较简单,可以查看官方提供的API http://senchalabs.github.com/connect/middleware-bodyParser.html,官方提供的例子https://github.com/senchalabs/connect/blob/1.8.4/examples/bodyParser.js

效果同 node.js+android(使用HttpURLConnection和HttpClient)实现文件上传,需要的话查看这篇博文。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: