multer文件上传

1,315 阅读1分钟

下载插件:npm install multer --save

注意: Multer 不会处理任何非 multipart/form-data 类型的表单数据。

filename:用于确定文件夹中的文件名的名字。 如果没有设置 filename,每个文件将设置为一个随机文件名,并且是没有扩展名的

destination 是用来确定上传的文件应该存储在哪个文件夹中。也可以提供一个 string (例如 '/tmp/uploads')。如果没有设置 destination,则使用操作系统默认的临时文件夹。默认会保存在/tmp/uploads/,路径需要自己建

//配置文件上传
var storage = multer.diskStorage({
	destination: function (req, file, cb) {
		cb(null, 'public/uploads/')
	},
	filename: function (req, file, cb) {
		var fileFormat = (file.originalname).split("."); //以点分割成数组,数组的最后一项就是后缀名
		console.log(fileFormat)
		cb(null, Date.now() + "." + fileFormat[fileFormat.length - 1]);
		// cb(null, file.filename + '-' + Date.now())
	}
})
//添加配置文件到multer对象
var upload = multer({
	storage: storage
});

写接口时要加upload.single('img_url'),

上传多张图片时,upload.single('img_url',2)

// single()中的名称必须是表单上传字段的name名称
router.post("/edit", upload.single('img_url'), async (ctx)=>{
	let img_url=ctx.req.file ? ctx.req.file.path.substring(7) : "";
	let id=ctx.req.body.id;
	let pid=ctx.req.body.pid;

application/x-www-form-urlencoded:默认编码方式

multipart/form-data:指定传输数据为二进制数据,例如图片、mp3、文件

text/plain:纯文本的传输。空格转换为“+”,但不支持特殊字符编码。

用postman测试时要改成如下请求格式