2017-07-03 40 views
0

我正在API中爲節點js中的多個圖片上傳。 所以,可以請你幫我,如何上傳僅適用於圖像,而不是另一個文件如何上傳多個圖片而不是其他文件

var Express = require('express'); 
var multer = require('multer'); 
var bodyParser = require('body-parser'); 
var app = Express(); 
app.use(bodyParser.json()); 
var Storage = multer.diskStorage({ 
    destination: function (req, file, callback) { 
     callback(null, "./Images"); 
    }, 
    filename: function (req, file, callback) { 
     callback(null, file.fieldname + "_" + Date.now() + "_" + file.originalname); 
    } 
}); 

var upload = multer({ storage: Storage }).array("imgUploader", 3); //Field name and max count 

app.get("/", function (req, res) { 
    res.sendFile(__dirname + "/index.html"); 
}); 

app.post("/api/Upload", function (req, res) { 
    upload(req, res, function (err) { 

     if (err) { 
      return res.end("Something went wrong!"); 
     } 
     return res.end("File uploaded sucessfully!."); 
    }); 
}); 

回答

0

您可以添加fileFilter功能,以您的multer選項。所以,帶着幾分重構:

var options = { 
    storage: multer.diskStorage({ 
     destination: function (req, file, callback) { 
      callback(null, "./Images"); 
     }, 
     filename: function (req, file, callback) { 
      callback(null, file.fieldname + "_" + Date.now() + "_" + file.originalname); 
     } 
    }), 
    fileFilter: function (req, file, callback) { 
    const isPhoto = file.mimetype.indexOf("image/") === 0 
    if (isPhoto) { 
     callback(null, true) // true if valid 
    } else { 
     callback({ message: 'An optional error message'}, false) // false if invalid 
    } 
    } 
} 

然後使用這些選項:

var upload = multer(options).array("imgUploader", 3); 

參見:https://github.com/expressjs/multer#filefilter

accept="image/*"您的輸入將只提供客戶端驗證,可與被移除開發控制檯。

0

使用accept屬性您的輸入。

<input type="file" name="pic" accept="image/*">

相關問題