【发布时间】:2021-04-08 18:37:56
【问题描述】:
我正在使用 React 开发一个项目,但遇到了一个让我很困惑的问题。
我想在 cloudinary 上上传我的文件,也想检查我的文件类型和 mime 类型,但遇到这个错误,这是我的代码
所以这是我的代码,我无法过滤掉文件类型。
如果有人有一些解决方案,如果你能帮助我,那就太好了
const multer = require("multer");
const DatauriParser = require("datauri/parser");
const path = require("path");
const fs = require("fs");
const dontenv = require("dotenv");
dontenv.config({ path: "config.env" });
let storage;
let dataUri;
const parser = new DatauriParser();
if (process.env.STORAGE_TYPE == "cloud") {
storage = multer.memoryStorage();
dataUri = (req) =>
parser.format(
path.extname(req.file.originalname).toString(),
req.file.buffer
);
} else {
dataUri = {};
storage = multer.diskStorage({
destination: function (req, file, cb) {
var directory = process.env.STORAGE;
if (!fs.existsSync(directory)) {
fs.mkdirSync(directory);
}
cb(null, directory);
},
filename: function (req, file, cb) {
cb(
null,
file.fieldname +
"-" +
Date.now() +
"." +
file.originalname.split(".")[1]
);
},
fileFilter: function (req, file, cb) {
checkFileType(file, cb);
},
});
function checkFileType(file, cb) {
// Allowed ext
const filetypes = /jpeg|jpg|png|gif/;
// Check ext
const extname = filetypes.test(
path.extname(req.file.originalname).toString()
);
// Check mime
const mimetype = filetypes.test(file.mimetype);
if (mimetype && extname) {
return cb(null, true);
} else {
cb("Error: Images Only!");
}
}
// to Check File TYpe
}
const multerUploads = multer({ storage: storage }).single("imageUrl");
module.exports = { multerUploads, dataUri };
我不知道为什么会发生这种情况,如果有人遇到过这种情况,我将不胜感激。
【问题讨论】:
标签: javascript node.js reactjs multer cloudinary