将简单的上传文件移动到新位置

时间:2013-12-04 08:40:50

标签: node.js express

我想做的事情::

我正在尝试将上传的文件移至/public/images


我的要求 ::

enter image description here

我的 app.js 代码

var express=require('express');
var mysql=require('mysql');
var fs=require('fs');
var http=require('http');
var crypto=require('crypto');

var app=express();

var connection=mysql.createConnection({
    host:'localhost',
    user:'******',
    password:'******',
    database:'*********'
});

connection.connect();

app.set('port',process.env.PORT||7002);

app.use(express.bodyParser());

app.post('/Details/',function(req,res){

    var file_name=req.files.key.originalFilename;
    console.log(file_name);

    crypto.randomBytes(8, function(ex, buf) {

        var array     = req.files.key.originalFilename.split('.');
        var type      = array[array.length - 1];
        var name      = buf.toString('hex') + '.' + type;

        fs.rename(req.files.key.path, './public/images/' + name, function(e) {
            next(e, name);
        });
    });
});

http.createServer(app).listen(app.get('port'),function(){
    console.log('Express server listening on port'+app.get('port'));
});

我遇到错误 ::

next(e, name)......... "next" not defined

如何解决此问题?

1 个答案:

答案 0 :(得分:1)

你到底想做什么?我认为不是调用next,而是要生成一个回复给客户端的响应。

所以不要这样:

next(e, name);

这样做:

if (e) {
  res.send(500, e.message);
} else {
  res.send(WHATEVER_YOU_WANT_TO_SEND_AS_RESPONSE);
}

如果确实想要调用next,则需要将其添加到回调函数的参数列表中:

app.post('/Details/', function(req, res, next) { ...