イメージをアップロードするためにmulterを実行しているノードサーバーに接続するionic 2の学習体験として、簡単なアプリケーションを作成しています。私が実行している問題は、multerから最終的なファイル名をアップロードしてローカルに保存する必要があるということです。私は認証とユーザー情報のために@ ionic/cloud-angularのAuthとUserモジュールを使用しています。 Userオブジェクトには、「名前」、「電子メール」、「ユーザー名」、「イメージ」などの詳細オブジェクトがあります。 イメージはノードサーバーにアップロードされ、それを保存するときに取得する必要がありますそのファイル名をアプリケーションに戻して、user.details.imageプロパティを更新することができます。ここでmulterと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})のようなものです。 res.end(); 私は本当にこの時点では分かりません。私はmulter上で見つけることができるすべてのチュートリアルでは、新しいファイル名を作成し、ディスクまたはデータベースまたはメモリにファイルを保存する方法を示していますが、ファイル名をアップロードしたアプリケーションに戻します。 事前にお手伝いいただきありがとうございます。本当にありがとうございます。あなたが物事をアップロードするイオン2のコードを見る必要があるなら私に知らせてください、そして私はそのコードでポストを更新します。ありがとうございました。
を使用してクライアントに送信することができ、複数のファイルに
req.files
をアップロードする場合は、
req.file.filename
を使用してファイル名を取得することができます1つのファイルをアップロードする場合、この方法ですあなたはIRLをコードしていますか?行間に改行はありませんか?うわー... – borislemke
いいえ、私はコードを凝縮し、投稿用に簡素化しようとしていました。 200行のコードを投稿すると、人々は少し迷惑をかけるだろうと確信しています。それは50で行うことができます。投稿の方が良いと思いました –