【问题标题】:Issue on upload image in nodejsnodejs上传图片的问题
【发布时间】:2019-05-19 05:32:20
【问题描述】:

Req.file 和 req.files 是未定义的。

我尝试过使用人们认为有用但对我没有用的方法。

var upload = multer({dest: './public/files/lost/'});

//INDEX - show all items
router.get("/", function(req, res){
   res.render("items/report");               
});

//CREATE - add new lost to DB
router.post("/", upload.single("image"), function(req, res){
    // get data from form and add to items array
    console.log(req.file);
    console.log(req.files);
    // Other req.body usage here
})

表格

<div class="container">
    <div class="row">
        <h1 style="text-align: center">Report for the Lost Item</h1>
        <div style="width: 30%; margin: 25px auto;">
            <form action="/report" method="POST" enctype="multipart/form-data">
                <div class="form-group">
                    <input class="form-control" type="text" name="name" placeholder="name">
                </div>
                <div class="form-group">
                    <input class="form-control" type="text" name="type" placeholder="request type">
                </div>
                <div class="form-group">
                    <input class="form-control" type="text" name="date" placeholder="date">
                </div>
                <div class="form-group">
                    <input class="form-control" type="text" name="time" placeholder="time">
                </div>
                <div class="form-group">
                    <input class="form-control" type="text" name="location" placeholder="location">
                </div>
                <div class="form-group">
                    <input class="form-control" type="text" name="phone" placeholder="phone">
                </div>
                <div class="form-group">
                    <input class="form-control" type="file" name="image" placeholder="image url">
                </div>
                <div class="form-group">
                    <input class="form-control" type="text" name="description" placeholder="description">
                </div>
                <div class="form-group">
                    <button class="btn btn-lg btn-primary btn-block">Submit!</button>
                </div>
            </form>
            <a href="/report">Go Back</a>
        </div>
    </div>
</div>
<% include ../partials/footerstudent %>

我希望 req.file 包含上传文件的文件名和其他属性。

【问题讨论】:

    标签: javascript node.js express multipartform-data multer


    【解决方案1】:

    我观察到您正在将表单提交到 report 端点。应该这样消费

    router.post("/report", upload.single("image"), function(req, res){
        // get data from form and add to items array
        console.log(req.file);
        console.log(req.files);
        // Other req.body usage here
    }) 
    

    但要在您的应用程序中重新组装上传的文件,您需要解析请求正文(作为多部分表单数据)。

    Express 3.x 中,您可以使用 express.bodyParser 中间件来处理多部分表单,但从 Express 4.x 开始,框架中没有绑定正文解析器。 有许多可用的软件包假设您使用的是 mutler 和 Express 4.0

    首先通过发送其他参数确保 API 正确消费

    【讨论】:

      猜你喜欢
      • 2020-08-04
      • 2023-03-10
      • 1970-01-01
      • 2019-02-03
      • 2011-04-23
      • 2020-07-08
      • 2011-07-02
      • 1970-01-01
      相关资源
      最近更新 更多