MulterError: Unexpected field

news/2024/7/16 6:19:55

今天上传多文件时报了个错MulterError: Unexpected field

这里代码反复检查没有出错

const express = require('express');
const router = express.Router();
const path = require('path');

/**
文件接收器
 **/
const multer = require('multer');
const { log } = require('console');
// 生成仓库信息
const storage = multer.diskStorage({
	// 设定存储路径
	destination:function(req,file,cb){
		// req本次请求信息
		// file本次请求的文件
		// cb回调函数,利用回调函数来设定存储路径
		cb(null,'./uploads')
		// 第一个参数null,表示不要修改二进制流文件
	},
	
	// 设定文件名称
	filename:function(req,file,cb){
		// 拿到文件名
		const tmp = path.extname(file.originalname);
		// 根据文件时间、随机数、后缀名生成新的文件名
		const date = `${new Date().getTime()}`;
		const random = `${Math.random().toString().slice(2)}`;
		const file_name = `avatar_${date}-${random}${tmp}`;
		// cb回调函数,利用回调函数来设定文件名称
		cb(null,file_name);
	}
});
const fileUpload = multer({storage});

/* 
暴露 
 */
router.post('/upload',fileUpload.array('photo',3),(req,res)=>{
	try{
		console.log(123);
	}catch(e){
		console.log(e);
	}
});
module.exports = router;

报错信息

MulterError: Unexpected field
    at wrappedFileFilter (D:\nodeJsProject\test\node_modules\multer\index.js:40:19)
    at Multipart.<anonymous> (D:\nodeJsProject\test\node_modules\multer\lib\make-middleware.js:107:7)
    at Multipart.emit (node:events:527:28)
    at HeaderParser.cb (D:\nodeJsProject\test\node_modules\busboy\lib\types\multipart.js:358:14)
    at HeaderParser.push (D:\nodeJsProject\test\node_modules\busboy\lib\types\multipart.js:162:20)
    at SBMH.ssCb [as _cb] (D:\nodeJsProject\test\node_modules\busboy\lib\types\multipart.js:394:37)
    at feed (D:\nodeJsProject\test\node_modules\streamsearch\lib\sbmh.js:248:10)
    at SBMH.push (D:\nodeJsProject\test\node_modules\streamsearch\lib\sbmh.js:104:16)
    at Multipart._write (D:\nodeJsProject\test\node_modules\busboy\lib\types\multipart.js:567:19)
    at writeOrBuffer (node:internal/streams/writable:389:12)

最后发现问题是下面这个表单代码from少了闭合标签

<div class="center">单文件上传</div>
		<div class="center">
			<form action="http://localhost:8888/file/upload" method="POST" enctype="multipart/form-data">
				<input type="file" name="avatar">
				<button>单文件上传</button>
			
		</div>
		<br><br><br>
		<div class="center">多文件上传</div>
		<div class="center">
			<form action="http://localhost:8888/multiple/upload" method="POST" enctype="multipart/form-data">
				<input type="file" name="photo" multiple="multiple">
				<button>多文件上传</button>
			
		</div>

改正为

<div class="center">单文件上传</div>
		<div class="center">
			<form action="http://localhost:8888/file/upload" method="POST" enctype="multipart/form-data">
				<input type="file" name="avatar">
				<button>单文件上传</button>
			</form>
		</div>
		<br><br><br>
		<div class="center">多文件上传</div>
		<div class="center">
			<form action="http://localhost:8888/multiple/upload" method="POST" enctype="multipart/form-data">
				<input type="file" name="photo" multiple="multiple">
				<button>多文件上传</button>
			</form>
		</div>

问题解决


http://www.niftyadmin.cn/n/4611445.html

相关文章

如何在ASP.NET Core中使用Redis

注&#xff1a;本文提到的代码示例下载地址> https://code.msdn.microsoft.com/How-to-use-Redis-in-ASPNET-0d826418 Redis 是一个开源的内存中的数据结构存储系统&#xff0c;可以用作数据库、缓存和消息中间件。它支持多种类型的数据结构&#xff1a;字符串&#xff0c;哈…

node请求页面时自动下载

问题如下&#xff0c;这里浏览器访问接口会直接下载 const router require(express).Router(); const fs require(fs);router.get(/index.html,(req,res)>{fs.readFile(./views/cookie.html,utf8,(err,data)>{if(err) res.send(error);else res.send(data);}); }); mo…

Android中EditText显示明文与密码的两种方式

效果图如下所述&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android" xmlns:tools"http://schemas.android.com/tools" android:layout_width&qu…

context must be a dict rather解决

原来的代码 def depart_edit(request, nid):# 修改部门# 根据获取到的nid查询数据库row models.Department.objects.filter(idnid).first()# 转发数据row到depart_edit.htmlreturn render(request, depart_edit.html, row)最终发现问题render()第三个参数应该是对象形式 def…

OS层面删除数据文件后的恢复方式(LINUX):

此次删除数据文件后&#xff0c;请不要重启数据库或者关闭数据库&#xff0c;可直接在线恢复。测试方式&#xff1a;先从数据库中查看数据库数据文件的文件号及路径&#xff1a; SQL> select FILE# ,name from v$datafile;FILE# NAME ---------- -----------------------…

pyside2____1.安装和案列

安装 pip install pyside2 -i https://pypi.douban.com/simple/ 代码main.py from PySide2.QtWidgets import QApplication, QMainWindow, QPlainTextEdit, QPushButtonapp QApplication() # 总程序 window QMainWindow() # 主窗口对象 window.resize(500, 400) window.m…

Could not autowire.No beans of ‘userMapper‘ type found.

这里并没有错误&#xff0c;但是IDEA报红 package com.example.demo.mapper;import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.t…

腾讯iphone面试题(转)

1Objective&#xff0d;C内部的实现2CALayer和View的关系3 http协议&#xff0c;tcp/ip4 UITableView的那些元素是可以自定义的&#xff1f;5 c语言的&#xff0c;定义变量&#xff0c;比如int&#xff0c;在什么情况下&#xff0c;其最大值是不同的6 比较32位平台和64位平台不…