nodejs使用multer中间件上传混合表单提交(文件和非文件普通文本域)

我的一个表单包括几个input(type=’text’)普通的文本域和input(type=’file’),两者同属一个表单,form设置enctype=’multipart/form-data’。需要混合上传,savePoster是保存文件逻辑,save是保存信息(文本域提交过来的)逻辑

前端页面(jade模板)最简化后大致是这样的:

      form(method='post', action='/admin/movie/save' enctype='multipart/form-data')
          input(type="file", name="uploadPoster")
          input(type="text", name="movie[flash]", value=movie.flash)

我们在路由里是这样处理的

router.post('/admin/movie/save',       User.signinRequired, User.permission, Movie.savePoster, Movie.save);

理想状态:

文件上传和文本域同属一个表单,并且表单设置enctype=’multipart/form-data’

在savePoster里,获

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,使用form表单提交文件到后端,可以按照以下步骤操作: 1. 在前端HTML页面中,使用form标签定义一个表单,设置enctype属性为"multipart/form-data",表示表单数据包含文件上传的二进制数据。 2. 在表单中添加一个input标签,设置type属性为"file",表示上传文件的输入框。 3. 在表单中添加一个submit按钮,点击时提交表单数据到后端。 4. 在后端接收表单数据时,需要使用相应的框架或库进行解析和处理。比如使用express框架时,可以使用multer中间件处理文件上传,代码如下: ``` const express = require('express'); const multer = require('multer'); const app = express(); // 配置multer中间件处理文件上传 const storage = multer.diskStorage({ destination: function (req, file, cb) { cb(null, 'uploads/') // 上传文件保存的目录 }, filename: function (req, file, cb) { cb(null, Date.now() + '-' + file.originalname) // 上传文件保存的文件名 } }) const upload = multer({ storage: storage }) // 处理文件上传的请求 app.post('/upload', upload.single('file'), (req, res) => { console.log(req.file) // req.file包含上传文件信息 res.send('文件上传成功!') }) app.listen(3000, () => { console.log('服务器已启动...') }) ``` 以上代码中,通过multer.diskStorage()方法配置文件上传的保存目录和文件名,然后使用multer()方法创建一个中间件upload,用于处理文件上传的请求。在app.post()方法中,使用upload.single()方法指定上传文件的字段名,然后在回调函数中输出req.file对象,该对象包含上传文件的信息。最后使用res.send()方法返回上传成功的消息。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值