2015-12-07 3 views
3

Используя 'multer', я заставил его запросить файл изображения, подобный этому. enter image description hereКак установить имя загруженного файла?

И этот файл хранится в папке 'uploads', которую я установил. мой код ниже:

var multer = require('multer') 
var upload = multer({dest:'./uploads/'}); 
//var upload = multer({ storage: storage }); 
var app = express(); 
app.use(app.router); 
app.post('/upload', upload.single('puzzle'), function (req, res, next) { 
    console.log(req.file); 
}); 

Но я хочу установить мое имя файла как «abc.png» не «ABC»

Я читал документы, и что я обнаружил, что

var storage = multer.diskStorage({ 
    destination: function (req, file, cb) { 
    cb(null, '/uploads'); 
    }, 
    filename: function (req, file, cb) { 
    cb(null, file.fieldname + '-' + Date.now()); 
    } 
}); 

var upload = multer({ storage: storage }); 

Так что мой модифицированный код ниже:

var multer = require('multer') 
var storage = multer.diskStorage({ 
    destination: function (req, file, cb) { 
    cb(null, '/uploads'); 
    }, 
    filename: function (req, file, cb) { 
    cb(file.filename+'.png', file); 
    } 
}); 

var upload = multer({ storage: storage }); 
var app = express(); 
app.use(app.router); 
app.post('/upload', upload.single('puzzle'), function (req, res, next) { 
    console.log(req.file); 
}); 

Но в этом случае возникает ошибка и говорит: «ошибка: ENOENT, открытый '/ uploads/puzzle-1449496743377', не похоже на изображение выше ...

Как я могу это решить?

Я уверен, что многие разработчики новичка вроде меня будет в беде благодаря недобрым документам ...

ответ

0

Я думаю, ваша проблема заключается в определении директории назначения. Начальный '.' пропал, отсутствует. Попробуйте использовать этот код:

destination: function (req, file, cb) { 
    cb(null, './uploads/'); 
}, 
1
var fs = require('fs'); 
var multer = require('multer') 
//var uploader = multer({dest:'./uploads/'}); 

var storage = multer.diskStorage({ 
    destination: function (req, file, cb) { 
    cb(null, './uploads/') 
    }, 
    filename: function (req, file, cb) { 
    crypto.pseudoRandomBytes(16, function (err, raw) { 
     cb(null, raw.toString('hex') + Date.now() + '.png'); 
    }); 
    } 
}); 
var upload = multer({ storage: storage }); 
var app = express(); 
app.use(app.router); 
app.post('/upload', upload.single('puzzle'), function (req, res, next) { 
    console.log(req.file); 
}); 

Решено, спасибо всем ребятам спасибо

Смежные вопросы