node.js - 使用 Node.js、Express 和 Mongoose 上传图片

标签 node.js image file-upload express mongoose

请考虑更新的答案,这些答案包含更多最新信息,因为多年来情况发生了变化!

由于许多新的 Node.js 库很快就被淘汰了,而且无论如何我想问的关于上传图片的例子相对较少:

  • Node.js (v0.4.1)
  • express (1.0.7)
  • Mongoose (1.1.0)。

其他人是怎么做到的?

我找到了:node-formidable ,但我是一般上传图片的新手,所以我想学习一般的东西和使用 Node.js 和 Express 的方法。

最佳答案

我将第一次回答我自己的问题。我直接从源代码中找到了一个示例。请原谅可怜的缩进。我不确定在复制和粘贴时如何正确缩进。代码直接来自 Express multipart/form-data example在 GitHub 上。

// 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('/', function(req, 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');

关于node.js - 使用 Node.js、Express 和 Mongoose 上传图片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5149545/

相关文章:

javascript - 如何使用 sinon.js stub 链接函数

javascript - Mongoose findOne 回调不起作用

node.js - 尝试为arm交叉编译node.js时错误的-rpath选项

Java - 将图像添加到 JButton

html - 按比例调整表格大小以适合 div

grails - 每个请求只能调用一次 ServletFileUpload.parseRequest() 吗?

php - 无法打开流 : Is a directory in

html - 如何使用 HTML 和 Nodejs 创建 mysql 表

java - 将透明png图像压缩为jpg给黑色背景java

file-upload - Selenium 网络驱动程序 : can't upload file remotely on Firefox (Java)