zoukankan      html  css  js  c++  java
  • 在Express中使用Multiparty进行文件上传及POST、GET参数获取

    Express 版本:4.14.1

    在Express中,文件上传需要用到multiparty中间件,在项目目录中,通过npm install multiparty –save进行安装必要组件。

    前端HTML代码,用于上传文件:

    <form action="/upload" method="post" enctype="multipart/form-data"> 
       <input id="lefile" type="file" name="filenames" multiple="multiple" /> 
       <input type="submit" class="btn btn-primary" value="submit" /> 
    </form>

    单文件处理


    后台NodeJs代码, 用于接收文件:

    router.post('/upload', function(req, res) {
         //生成multiparty对象,并配置上传目标路径
        var form = new multiparty.Form();
        //设置编辑
        form.encoding = 'utf-8';
        //设置文件存储路径
        form.uploadDir = "E:/";
        //上传完成后处理
        form.parse(req, function (err, fields, files) {
            var filesTmp = JSON.stringify(files, null, 2);
            if (err) {
                console.log('parse error: ' + err);
            } else {
                console.log('parse files: ' + filesTmp);
                var inputFile = files['filenames'][0];
                //重命名为真实文件名
                fs.renameSync(inputFile.path, form.uploadDir+inputFile.originalFilename, function (err) {
                    if (err) {
                        console.log('rename error: ' + err);
                    } else {
                        console.log('rename ok');
                    }
                });
            }
            res.writeHead(200, {'content-type': 'text/plain;charset=utf-8'});
            res.write('received upload:
    
    ');
            res.end(util.inspect({fields: fields, files: filesTmp}));
        });
    });
    module.exports = router;

    多文件上传处理


    //保存上传文件
    files['filenames'].forEach(function(inputFile) {
        //重命名为真实文件名
        fs.renameSync(inputFile.path, form.uploadDir + projectName + "/" + inputFile.originalFilename,
        function(err) {
            if (err) {
                console.log('rename error: ' + err);
            } else {
                console.log('rename ok');
            }
        });
    });

    获取参数值


    此时,如果需要在上传文件的过程中获取post或者get参数,不能按照往常的做法,而是需要使用Multiparty中间件来获取,即在form.parse函数块中获取,如下所示:

    form.parse(req, function (err, fields, files) {
            projectName = fields['projectName'];
            ......

    此处获取参数projectName的值。

    参考:multiparty官方文档

  • 相关阅读:
    jquery 使用on方法给元素绑定事件
    bootstrap 学习笔记(部分)
    ajax 调用 webService
    ASP.NET 上传文件
    SQL 表 数据备份
    在控制台程序中,添加config文件
    webConfig的使用
    C# 下载文件的心得
    JS将页面中表格,导出到Excel中(IE中)
    Yahoo 军规(部分)
  • 原文地址:https://www.cnblogs.com/eczhou/p/7845506.html
Copyright © 2011-2022 走看看