【问题标题】:Page won't redirect when uploading to db with multer使用 multer 上传到数据库时页面不会重定向
【发布时间】:2022-11-23 06:24:18
【问题描述】:

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

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

  • 邮寄路线
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 });

【问题讨论】:

    标签: redirect next.js multer


    【解决方案1】:

    问题出在 LiveServer chrome 扩展上,它通过重定向搞乱了一些东西。现在这个问题对我来说似乎很愚蠢但是如果有人偶然发现这个我希望我能提供帮助

    【讨论】:

      猜你喜欢
      • 2016-12-19
      • 1970-01-01
      • 1970-01-01
      • 2015-09-06
      • 1970-01-01
      • 1970-01-01
      • 2017-10-26
      • 2012-05-09
      • 1970-01-01
      相关资源
      最近更新 更多