初窥nodejs --- 文件上传

multer插件简介

我们知道,关于nodejs的请求中,get请求的参数都会保存在req.query中,post请求的参数都会保存在req.body中(需要借助插件body-parser 它的简单作用是将post请求的数据存入req.body中)。
而文件上传不同于get请求和post请求,它同样也需要借助一个插件multer,multer的简单作用是将上传文件的信息存入req.files中

Multer是nodejs中处理multipart/form-data数据格式(主要用在上传功能中)的中间件。该中间件不处理multipart/form-data数据格式以外的任何形式的数据
Tips:multipart/form-data是用来指定传输数据的特殊类型的,主要就是我们上传的非文本的内容,比如图片或者mp3等等

multer插件的使用

引入multer插件

const multer = require('multer');

设置文件存储路径

const multerObj = multer({dest:'./static/images'}); //dest表示文件上传后的存储路径

使用multer插件

router.use(multerObj.any()); //这里的any表示接收所有类型的文件

以一个form表单为例:

<form action="http://localhost/project/upload" method="post" enctype="multipart/form-data">
    <input type="text" name="username"><br>
    <input type="password" name="password"><br>
    <input type="file" name="image"><br>
    <input type="submit" value="上传">
</form>

打印出运行结果
这里写图片描述

这里有一个问题:文件上传后是没有了扩展名的,我们手动给它加上扩展名,这里利用插件path实现

插件path介绍

以一段代码为例:

const path = require("path");
var str = "c:\\www\\images\\1.jpg";
var obj = path.parse(str);

打印运行结果

这里写图片描述

nodejs代码

router.post('/upload',function(req, res){ 
    var img = req.files[0]; //获取上传文件信息
    var newname = img.path + pathLib.parse(img.originalname).ext; //添加扩展名
    fs.rename(img.path,newname,function(err){ //将已上传文件重命名(加上扩展名)
        console.log(err);
    });
    res.end();
});
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值