用multer和nodejs返回上传文件的文件名

我创build了一个简单的应用程序作为一个学习经验与离子2,连接到节点服务器运行multer上传图像。 我遇到的问题是,我需要从最后的文件名得到从上传到它的应用程序,以保存在本地。 我正在使用来自@ ionic / cloud-angular的authentication和用户模块来进行authentication和用户信息。 用户对象有一个细节对象,如“名称”,“电子邮件”,“用户名”,“图像”,…所以,当一个图像上传到节点服务器,并保存它,我需要得到文件名返回到应用程序,所以我可以更新user.details.image属性。

这里是我的节点服务器的简单版本…

var express = require('express'); var http = require('http'); var bodyParser = require('body-parser'); var multer = require('multer'); var cors = require('cors'); var postStorage = multer.diskStorage({ destination: function(req, file, callback) { callback(null, './uploads'); }, filename: function(req, file, callback) { let fileName = '', postName; if(typeof req.body.postName !== "undefined") { postName = req.body.postName.toLowerCase().replace(/ /g, '-'); filename += postName; } fileName += new Date().getTime(); fileName += ".png"; callback(null, fileName); } }); var app = express(); app.set('port', process.env.PORT || 3000); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({extended: false})); app.use(cors()); app.post('/upload', function(req, res) { var uploadPost = multer({storage: postStorage}).single('post_image'); uploadPost(req, res, function(err) { if(err) { return res.end("error uploading file"); } res.end("file uploaded"); }); }); app.listen(app.get('port'); console.log("app listening on port: " _ app.get('port')); 

有没有办法让它发回最后的文件名称,保存? 类似res.json({fileName:fileName}); 重发(); 我真的不知道在这一点上,我可以find的所有教程,只是展示如何创build一个新的文件名,并保存在磁盘或数据库或内存中的文件,但没有显示如何实际得到该文件名回到上传它的应用程序。 提前感谢您的帮助,我真的很感激。 如果你需要看到上传的离子2代码,请让我知道,我也会更新该代码的post。 谢谢。

如果您正在上传单个文件,则可以使用req.file.filename获取文件名

如果你上传多个文件req.files

一旦你有文件名,你可以使用res.send({filename:FileName});发送给客户端res.send({filename:FileName});