2015-12-17 24 views
12

我正在使用以下方式通過Multer將文件上傳到目錄。它很好用,但是我需要在上傳後執行一些操作,這些操作需要我剛發佈到「上傳」目錄的文件的名稱。我如何獲得我剛剛發佈的文件的名稱?節點/ 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 
}); 
+0

http://stackoverflow.com/questions/41209875/should -not-allow-file-upload-if-anyone-changes-extension-from-exe-to-png-via-mul –

回答

6

request.file給出了下面的統計數據,從中你只需要拿起request.file.originalnamerequest.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) 
} 
+0

http://stackoverflow.com/questions/41209875 /應該 - 不容許文件上傳-IF-人 - 變化 - 擴展 - 從-EXE至PNG-通過-MUL –

1

使用 request.file.filename

中的形式
ORIGINALNAME名稱指定

字段名字段名稱文件 編碼文件的編碼類型
mimetype文件的MIME類型
該文件的字節

2

訪問上傳的文件數據尺寸大小的區別Multer,這取決於您是否上傳多個文件。訪問數據就像這樣:

上傳單個文件:

req.file 

上傳多個文件:

req.files 
4
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); 
});