我正在創建一個簡單的應用程序作爲一個學習經驗與離子2,連接到節點服務器運行multer上傳圖像。我遇到的問題是,我需要將最後一個文件名從multer返回到上傳它的應用程序,以便將其保存到本地。我正在使用@ ionic/cloud-angular的Auth和User模塊來驗證和用戶信息。用戶對象具有諸如「名稱」,「電子郵件」,「用戶名」,「圖像」等內容的詳細信息對象...因此,當圖像上傳到節點服務器並且保存它時,我需要獲取該文件返回到應用程序,以便我可以更新user.details.image屬性。返回上傳文件與Muller和nodejs的文件名
這裏是我的節點服務器的簡單版本...
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});重發(); 我真的不知道在這一點上,我可以找到的所有教程,只是顯示如何創建一個新的文件名,並保存在磁盤或數據庫或內存中的文件,但沒有顯示如何才能真正得到文件名返回到上傳它的應用程序。 非常感謝您的幫助,我真的很感激。如果您需要查看上傳這些內容的離子2代碼,請告訴我,我也會使用該代碼更新該帖子。謝謝。
上傳多個文件
req.files
一旦你得到了文件名,你可以將其發送給客戶端,你可以得到的文件名請問這是怎麼你編碼IRL?行之間沒有換行符? Ouch ... – borislemke
不,我試圖壓縮代碼並簡化發佈。我敢肯定,如果我發佈了200行代碼,那麼人們會感到有點惱火,可以在50年完成。我認爲,這將是更好的文章 –