17、Node多文件上传方法

阅读() @2018-10-29 18:16:11

使用Node同样可以上传文件,Node提供了文件上传模块:multer,首先使用npm进行安装。

安装完成之后,在module目录下新建一个multer.js文件,其中代码如下:

/**
 * Created by Administrator on 2017/4/15.
 */
var multer=require('multer');
var storage = multer.diskStorage({
    //设置上传后文件路径。
    destination: function (req, file, cb) {
        cb(null, './public/uploads')//自定义上传路径
    },
    //给上传文件重命名,获取添加后缀名
    filename: function (req, file, cb) {
        var fileFormat = (file.originalname).split(".");
        cb(null, file.fieldname + '-' + Date.now() + "." + fileFormat[fileFormat.length - 1]);
    }
});
//添加配置文件到muler对象。
var upload = multer({
    storage: storage
});

//如需其他设置,请参考multer的limits,使用方法如下。
//var upload = multer({
//    storage: storage,
//    limits:{}
// });

//导出对象
module.exports = upload;

前端页面中的代码如下:

<form action="/upload/uploadForm" method="post" enctype="multipart/form-data">
        <input type="text" name="name" />
        <input type="file" name="files" multiple="multiple" />
        <input type="submit" value="提交" />
    </form>

后端处理:

/**
 * Created by Administrator on 2017/4/15.
 */
var express = require('express'),
    app = express(),
    router = express.Router(),
    db = require('../module/db').mysql,
    multer = require('../module/multer');

router.get('/', function(request, response){
    response.render('upload/index.ejs');
});

router.post('/uploadForm', multer.array('files'), function (request, response, next) {
    console.log(request.body.name);
    var fileNum = request.files.length;
    if(fileNum){
        for(var i=0; i<fileNum; i++){
            //将文件名与文件路径写入数据库
            db('insert into blog_file set filename="'+request.files[i].originalname+'", filepath="'+request.files[i].filename+'"', function(error, data){
                console.log(data);
            });
        }
    }
    response.send('<p>上传成功<a href="/upload/">继续上传!</a></p>');
});

exports.uploadRouter = router;

本节完!

微信二维码