express使用 multer 做文件上传

本文介绍了如何在Express应用中利用Multer中间件处理文件上传。Multer是基于busboy构建的,专注于multipart/form-data类型的请求,不处理其他类型的数据。在前端进行文件选择后,后端的Node.js服务器端代码接收并处理上传。要注意的是,若要访问上传后的图片,需要配置静态资源路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Multer是Express官方推出的,用于Node.js multipart/form-data请求数据处理的中间件。

它基于busboy构建,可以高效的处理文件上传,但并不处理multipart/form-data之外的用户请求

前端upload代码:


async uploadMethod(param) {
	let formdata = new FormData();
	formdata.append('file', param.file);
	let res = await uploadRequest(formdata);
}

下面是node server端代码:

var express = require('express');
var Router = express.Router();
var multer = require('multer');
var moment = require('moment');
var timestamp = '';
var timepath = moment().format('YYYY-MM-DD');
var destination = '/upload/' + timepath;
var filename = '';

var storage = multer.diskStorage({
    //这里destination是一个字符串
    destination: '.' + destination,
    filename: function (req, file, cb){
        //自定义设置文件的名字
        timestamp = new Date().getTime();
        filename = 'upload-' + timestamp + '.' + file.originalname.split('.')[1];
        cb(null, filename)
    }
});

var upload = multer({
    storage: storage
});
    
//处理来自页面的ajax请求。单文件上传
//多文件上传使用upload.array('file', number)
Router.post('/uploadImage', upload.single('file'), function (req, res, next) {
    //拼接文件上传后的路径
    var url = 'http://' + req.headers.host  + destination + '/' + filename;
    res.json({
        code: true, 
        msg: '上传成功', 
        imageUrl: url
    })
});

module.exports = Router;

注意:destination 如果是一个函数,则下面的路径必须是已经存在的路径,否则汇报错误:路径不存在;destination 如果是一个字符串,则路径不需要必须存在,会自动创建路径

如果本地访问不了已上传的图片,需要开启静态资源路径访问。

var pathname = __dirname;
//静态文件访问
app.use(express.static(pathname));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值