【发布时间】:2019-06-05 16:39:04
【问题描述】:
我正在尝试处理是否通过 multer 上传了错误的文件类型,以重定向回主页,并将错误消息存储在传递的变量中。
在上传常量的 fillFilter 中,我尝试使用 app.post 重定向到页面,但这不起作用。我试图处理发布响应中的回调错误,但它做了同样的事情。同样,我看不到太多关于我需要什么的文档,所以很难弄清楚我所做的语法是否会导致问题。
const express = require("express");
const app = express();
const path = require('path');
const multer = require("multer");
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, './uploads/')
},
filename: function (req, file, cb) {
cb(null, file.originalname)
}
})
const upload = multer({
storage: storage,
limits: {fileSize: 25000000}, //works with bytes, created a 25MB limit
fileFilter: (req, file, callback) => {
console.log(file.originalname)
let ext = path.extname(file.originalname);
if(ext !== '.zip') {
return callback(new Error('Only Zips are allowed'))
//Need to modify this to redirect?
}
callback(null, true)
}
})
app.get('/', function (req, res) {
res.render("index");
})
app.post('/', upload.single('fileUpload'), function (req, res) {
res.render("index", {postStatus : "File Succesfully Uploaded"});
});
如果输入了正确的格式(在本例中为 zip),它应该重定向回索引页面,并显示一条状态消息:文件已成功上传,并存储在上传文件夹中。
如果有其他问题,它会重定向回主页,但会显示一条错误消息,指出不支持文件类型。
【问题讨论】:
标签: node.js express zip pug multer