我正在使用ionic 2创建一个简单应用程序,连接到运行multer的node服务器以上传图片作为学习经验。我遇到的问题是,我需要将multer返回的最终文件名传回上传它的应用程序,以便在本地保存它。我使用@ionic/cloud-angular中的Auth和User模块进行身份验证和用户信息。User对象具有一个details对象,其中包括“名称”,“电子邮件”,“用户名”,“图像”等内容。
因此,当图像上传到node服务器并由multer保存时,我需要将该文件名传回应用程序,以便我可以更新user.details.image属性。
以下是我的node服务器的简单版本...
有没有一种方法可以让Multer发送回保存的最终文件名?就像res.json({fileName: fileName}); res.end()这样。我目前真的不知道,所有我能找到的关于Multer的教程都只是展示如何创建新的文件名并将文件保存在磁盘、数据库或内存中,但它们并没有展示如何实际上将文件名传回上传它的应用程序。非常感谢您提供的任何帮助。如果需要查看上传内容的Ionic 2代码,请告诉我,我将更新帖子中的代码。谢谢。
因此,当图像上传到node服务器并由multer保存时,我需要将该文件名传回应用程序,以便我可以更新user.details.image属性。
以下是我的node服务器的简单版本...
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'));
有没有一种方法可以让Multer发送回保存的最终文件名?就像res.json({fileName: fileName}); res.end()这样。我目前真的不知道,所有我能找到的关于Multer的教程都只是展示如何创建新的文件名并将文件保存在磁盘、数据库或内存中,但它们并没有展示如何实际上将文件名传回上传它的应用程序。非常感谢您提供的任何帮助。如果需要查看上传内容的Ionic 2代码,请告诉我,我将更新帖子中的代码。谢谢。