nodejs body-parser 上传表单文件

  1. 需要引入模块
var Express = require('express');
var multer = require('multer');
var bodyParser = require('body-parser');
  1. 第一步
var Storage = multer.diskStorage({
    destination: function (req, file, callback) {
        callback(null, "./Images");
    },
    filename: function (req, file, callback) {
        callback(null, file.fieldname + "_" + Date.now() + "_" + file.originalname);
    }
});

destination:配置文件的上传位置为images
我也不知道这个具体怎么搞得,没百度出来

以及文件名 filename
fieldname 在窗体中指定的字段名 + ‘’ + 时间戳+’’+用户计算机上文件的名称

  1. 第三步
var upload = multer({ storage: Storage }).array("imgUploader", 3); //Field name and max count

这里multer接受我们在上一步中创建的storage作为参数
接受文件数组长度为3,所有文件名都为imgUploader 。
在这里插入图片描述
这个时候前端的文件就会存在我们写的upload 方法中的req.files中
而其他内容存在req.body 中,与body-parser 用法一样(还是有不一样,req.files 存的是数组

在这里插入图片描述

我在使用中遇到的问题

  1. 使用formData获取表单 内容时候 只能使用原生js的查询例如
let form = document.getElementById("test-form")
  1. 上传完了之后发现 后台报错 Unexpected field
    将前端的 表单 上传文件的input框的name 属性设为imgUploader就行**(意思是前面第三步设置的‘文件名’与input 的name 属性相同即 name = “文件名”)**
<input type="file" name = "imgUploader" accept="image/gif, image/jpeg,image/x-png">

最后附一个:multer 使用的链接:github multer 文件例子

发布了50 篇原创文章 · 获赞 23 · 访问量 1252

猜你喜欢

转载自blog.csdn.net/qq_44698161/article/details/102593041