微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Node.js,Express和Mongoose上传图片

请考虑更新的答案,有更多的最新信息,因为多年来的事情已经改变!

由于许多新的Node.js库被快速渲染为过时的,并且有相对少的例子无论如何,我想询问关于使用最新版本的Node.js(v0.4.1),Express(1.0.7)和Mongoose 1.1.0)。他人怎么做的?

我发现:https://github.com/felixge/node-formidable,但我是一个上传图像的一般,所以我想学习一般的东西和使用Node.js和Express的方式。

解决方法

我会第一次回答我自己的问题。我发现一个例子直接从源。请原谅不好的缩进。我不知道如何在复制和粘贴时正确缩进。代码直接来自GitHub上的Express multipart/form-data example

// Expose modules in ./support for demo purposes
require.paths.unshift(__dirname + '/../../support');

/**
 * Module dependencies.
 */

var express = require('../../lib/express'),form = require('connect-form');

var app = express.createServer(
  // connect-form (http://github.com/visionmedia/connect-form)
  // middleware uses the formidable middleware to parse urlencoded
  // and multipart form data
  form({ keepExtensions: true })
);

app.get('/',function(req,res){
  res.send('<form method="post" enctype="multipart/form-data">'
    + '<p>Image: <input type="file" name="image" /></p>'
    + '<p><input type="submit" value="Upload" /></p>'
    + '</form>');
});

app.post('/',res,next){

  // connect-form adds the req.form object
  // we can (optionally) define onComplete,passing
  // the exception (if any) fields parsed,and files parsed
  req.form.complete(function(err,fields,files){
    if (err) {
      next(err);
    } else {
      console.log('\nuploaded %s to %s',files.image.filename,files.image.path);
      res.redirect('back');
    }
  });

  // We can add listeners for several form
  // events such as "progress"
  req.form.on('progress',function(bytesReceived,bytesExpected){
    var percent = (bytesReceived / bytesExpected * 100) | 0;
    process.stdout.write('Uploading: %' + percent + '\r');
  });
});

app.listen(3000);
console.log('Express app started on port 3000');

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐