我正在为节点js中的多个图像上传制作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 :(得分:0)
使用accept
属性作为输入。
<input type="file" name="pic" accept="image/*">
答案 1 :(得分: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/*"
仅提供客户端验证,可以使用开发控制台删除。