2017-07-03 7 views
0

ノードjで複数の画像をアップロードするAPIを作成しています。 だからあなただけの画像をアップロードし、あなたの入力のためではない、別のファイル他のファイルではなく複数の画像をアップロードするには

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

あなたのmulterオプションにfileFilter機能を追加することができます。

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/*">

関連する問題