2017-07-03 73 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/*">

相关问题