【问题标题】:Cannot POST /admin Error return in web browser无法 POST /admin 在 Web 浏览器中返回错误
【发布时间】:2021-05-13 03:48:43
【问题描述】:

我想在博客页面上更新我的图片。但我在网络浏览器中遇到错误,例如

Cannot POST /admin/portfolio/609911b1fba77be609396747/edit_cover

这里是edit_cover.ejs文件代码,我使用post方法在数据库中提交图片

<%-include('./partials/header')%>

<div class="container-fluid">
    <h1 class="text text-primary">Change Porfolio Cover Image Section</h1>
    <div class="card shadow mb-4">
        <div class="card-header">
            <form action="/admin/portfolio/<%=work._id%>/edit_cover" method="post" enctype="multipart/form-data">
                <div class="form-group">
                    <label for="exampleFormControlFile1">Cover</label>
                    <input type="file" name="cover" class="form-control-file" id="exampleFormControlFile1">
                </div>

                <div class="form-group">
                    <label for="exampleFormControlFile2">Snaps of Project</label>
                    <input class="form-control-file" name="images" type="file" id="exampleFormControlFile2" multiple>
                  </div>

                <div class="form-group">
                    <button type="submit" class="btn btn-success" >Update</button>
                </div>
                </form>
        </div>
        
        <div class="card-body">
            <div class="table-responsive">
                
                    </div>
                    </div>

</div>

我的 router.js 文件代码在这里,这里有两行代码,一个是获取请求,另一个是用于发布

router.get('/admin/portfolio/:id/cover_edit',serverController.isAuthenticated,serverController.portfolio_edit_cover)
router.post('/admin/portfolio/:id/cover_edit',serverController.isAuthenticated,upload.fields([{name: "cover", maxCount: 1},{name: "images", maxCount: 12}]),serverController.portfolio_edit_cover_post)

这是我的后端控制器和图像更新代码

exports.portfolio_edit_cover = async function(req,res){
    res.render('server/edit_cover',{
        work : await workCollection.findOne({_id: objectId(req.params.id)})
    })
}

exports.portfolio_edit_cover_post = function(req,res){
    let uploadImages = new Work(req.body, req.files, req.params.id)
    console.log(req.files)
    uploadImages.up().then((result)=>{
        res.redirect('/admin/portfolio',{
            work : result
        })
        
    }).catch(()=>{
        res.send('404')
    })
}

最后是我的模型代码。以下代码仅用于将我的数据更新到数据库中

Work.prototype.up = function(){
    return new Promise(async(resolve,reject)=>{
        await workCollection.updateOne({_id : objectId(this.id)}, {$set :
        
            {
                images : this.images
            }
        }
       
    )
    resolve()
    })
}

module.exports = Work

【问题讨论】:

    标签: node.js mongodb express ejs multer


    【解决方案1】:

    在 edit_cover.js 文件中它的路径类似于

    action="/admin/portfolio/&lt;%=work._id%&gt;**/edit_cover**" 和 router.js 就像

    router.get('/admin/portfolio/:id**/cover_edit**',serverController.isAuthenticated,serverController.portfolio_edit_cover)
    router.post('/admin/portfolio/:id**/cover_edit**',serverController.isAuthenticated,upload.fields([{name: "cover", maxCount: 1},{name: "images", maxCount: 12}]),serverController.portfolio_edit_cover_post)
    

    这两者都需要有相同的路径;一切都很好,但在最后一段,应该是/cover_edit

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多