香菊网

幻雨焉缘

坚持比方法更重要 🥗
😃

nodeJs express + multer 实现文件上传

香菊网 发表于: 2019-03-22 分类: nodeJs  front  服务器serve  

 

开发的时候图片上传是web开发中经常用到的一个功能,node对于这方面也有了相对完善的支持。经常用到的开源组件有 multer 、formidable 等,借助这两个开源组件,可以轻松搞定node 图片上传, 本文讲解的是利用multer 实现单文件 和 多文件上传的功能。

 

单文件上传

//调用模块
var express = require('express'); 
var multer = require("multer");
var appAdmin = express();
var path = require('path')

// 使用硬盘存储模式设置存放接收到的文件的路径以及文件名

var storage = multer.diskStorage({
    destination: function (req, file, cb) {
        console.log(__dirname)
        // 接收到文件后输出的保存路径(若不存在则需要创建)
        cb(null, '../../images');
    },
    filename: function (req, file, cb) {
        // 将保存文件名设置为 时间戳 + 文件原始名,比如 151342376785-123.jpg
        cb(null, `${Date.now()}-${file.originalname}`)
    }
})

var upload = multer({
    storage: storage
});

// 文件上传请求处理,upload.array 支持多文件上传,第二个参数是上传文件数目
appAdmin.post('/uploadimg', upload.single('file'), function (req, res) {
    // 读取上传的图片信息
    var files = req.file;
    // 设置返回结果
    // console.log(files)
    var result = {};
    if (!files.path) {
        result.code = 1;
        result.msg = '上传失败';
        errs(res)
    } else {
        result.code = 0;
        result.data = files
        result.msg = '上传成功';
        result.location = 'http://www.xiangjv.top/'+files.filename
        suces(res, result, 'imgUpload')
    }
});
diskStorage就是自定义 储存文件的信息也可以如下
var upload = multer({ dest: 'upload/' });

单文件上传的时候  upload.single('file')  的 'file' 是 input框的name属性

<input type="submit" value="上传文件" name="file">

多图上传

// 多图上传
app.post('/uploadimg', upload.array('file', 2), function(req, res, next){
    res.send({ret_code: '0'});
});

注意:多文件上传的时候 req.file 返回的不再是对象 而是数组

标签: nodeJsfront服务器serve
Copyright © 2019 幻雨焉缘博客 | 浙ICP备19001843号-1
----------------------------------
种一棵树,最好的培养时间是十年前,其次是现在 加油  (ง •_•)ง。        ──── 前端攻城狮