next.js 使用multer上载到数据库时,页面不会重定向

enxuqcxy  于 2022-11-29  发布在  其他
关注(0)|答案(1)|浏览(176)

我试图上传(实际更新)图像到数据库,然后重定向到个人资料页面,我尝试了一切,照片在数据库中更新成功,但页面不会重定向。

*如果我不附加图像,则一切正常,用户将被重定向。
*如果我附加了一个图像用户只是停留在表单页面,没有错误弹出,页面只是得到刷新(照片在数据库中成功更新)

  • 邮件路由
var store = require("./multer");
router.post("/:username/edit", isUser, personalContent, store.single("profilePic"), async (req, res) => {
    try {
        if (req.file) {
            await User.updateOne(
                { username: req.user.username },
                {
                    username: req.params.username,
                    dateOfBirth: req.body.date,
                    filename: req.file.originalname,
                    contentType: req.file.mimetype,
                    imageBase64: fs.readFileSync(req.file.path).toString("base64"),
                },
                { upsert: true }
            );
        } else {
            await User.updateOne(
                { username: req.user.username },
                {
                    username: req.params.username,
                    dateOfBirth: req.body.date,
                },
                { upsert: true }
            );
        }
        res.redirect("/profile/" + req.params.username + "?msg=Profile updated successfully");
    } catch (err) {
        console.log(err);
        res.redirect("/profile/" + req.params.username + "?msg=Error while updating profile");
    }
});
  • ejs表单
<form action="/profile/<%= user.username %>/edit" enctype="multipart/form-data" method="POST">
    <% if(error){ %> <%= error %> <% } %> <% if(msg){ %> <%= msg %> <% } %>
    <div>
        <label for="username">Username: </label>
        <input type="text" name="username" value="<%= user.username %>" disabled />
    </div>
    <div>
        <label for="date">Date of birth: </label>
        <input type="date" name="date" required value="<%= user.dateOfBirth.toISOString().split("T")[0] %>" />
    </div>
    <div>
        <label for="profpic">Profile picture:</label>
        <input type="file" name="profilePic" />
        <div>
            <% if(user.imageBase64){ %>
            <img src="data:<%=user.contentType%>;base64,<%=user.imageBase64%>" alt="" style="height: 3rem" />
            <% }else{ %> Add profile picture <% } %>
        </div>
    </div>
    <button type="submit">Submit</button>
</form>
  • multer.js
const multer = require("multer");
//set storage
var storage = multer.diskStorage({
    destination: (req, file, cb) => {
        cb(null, "uploads");
    },
    filename: (req, file, cb) => {
        cb(null, file.fieldname + "-" + Date.now());
    },
});

module.exports = store = multer({ storage: storage });
bpzcxfmw

bpzcxfmw1#

这个问题是LiveServer Chrome扩展的问题,它把一些重定向搞砸了。现在这个问题对我来说似乎很愚蠢,但如果有人偶然发现这个问题,我希望我能帮上忙

相关问题