• 在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官方文档

  • 相关阅读:
    继续聊WPF
    窥探Swift之别具一格的Struct和Class
    窥探Swift之类的继承与类的访问权限
    iOS开发之地图与定位
    iOS开发之WebView
    iOS开发之版本控制(SVN)
    iOS开发之抽屉效果实现
    iOS开发之调用系统打电话发短信接口以及程序内发短信
    转:GitHub 万星推荐成长技术清单
    vmware漏洞之四:简评USE-AFTER-SILENCE: EXPLOITING A QUIETLY PATCHED UAF IN VMWARE
  • 原文地址:https://www.cnblogs.com/eczhou/p/7845506.html
Copyright © 2020-2023  润新知