以下を使用して、Multerを介してファイルをディレクトリにアップロードしています。うまく機能しますが、アップロード後に「アップロード」ディレクトリに投稿したファイルの名前を必要とするいくつかのアクションを実行する必要があります。投稿したファイルの名前を取得するにはどうすればよいですか?
// Multer storage options
var storage = multer.diskStorage({
destination: function(req, file, cb) {
cb(null, 'upload/');
},
filename: function(req, file, cb) {
cb(null, file.originalname + '-' + Date.now() + '.pdf');
}
});
var upload = multer({ storage: storage });
app.post('/multer', upload.single('file'), function(req, res) {
// Need full filename created here
});
request.file
は、次の統計情報を提供します。これらの統計情報から、request.file.originalname
またはrequest.file.filename
は、nodejsアプリによって作成された新しいファイル名を取得します。
{
fieldname: 'songUpload',
originalname: '04. Stairway To Heaven - Led Zeppelin.mp3',
encoding: '7bit',
mimetype: 'audio/mp3',
destination: './uploads',
filename: 'songUpload-1476677312011',
path: 'uploads/songUpload-1476677312011',
size: 14058414
}
たとえば、nodejsでは、ecma-6でmvcアプリを表現します。
var Express = require('express');
var app = Express();
var multipartUpload = Multer({storage: Multer.diskStorage({
destination: function (req, file, callback) { callback(null, './uploads');},
filename: function (req, file, callback) { callback(null, file.fieldname + '-' + Date.now());}})
}).single('songUpload');
app.post('/artists', multipartUpload, (req, resp) => {
val originalFileName = req.file.originalname
console.log(originalFileName)
}
var express=require("express");
var app=express();
var multer=require("multer");
var upload=multer({dest:"uploads/"});
app.post("/multer", upload.single("file"), function(req,res){
console.log(req.file.filename);
});
singleまたはmultipleファイルをアップロードするかどうかによって、アップロードされたファイルデータへのアクセスはMulterで異なります。次のようなデータにアクセスします。
単一ファイルのアップロード:
req.file
複数のファイルのアップロード:
req.files
request.file.filenameを使用
fieldnameフォームで指定されたフィールド名
originalnameユーザーのコンピューター上のファイル名エンコードファイルのエンコードタイプ
mimetypeファイルのMIMEタイプ
sizeバイト単位のファイルサイズ