代码之家  ›  专栏  ›  技术社区  ›  Zaheen

如何在node js中使用强大的文件扩展名?

  •  3
  • Zaheen  · 技术社区  · 9 年前

    Js文件:

    var formidable = require('formidable');  
    var fs = require('fs');  
    var ex = require('express');  
    var fse = require('fs-extra');  
    var app = ex();
    
    app.set('view engine', 'ejs');
    
    app.get('/form', function(req, res) {  
      res.render(__dirname + '/views/front.ejs', {title: 'form-page'});  
    }).listen(8081);
    
    app.post('/form', function(req, res) {
        var form = new formidable.IncomingForm();
        form.parse(req, function (err, fields, files) {
          var oldpath = files.fil.path;
          var newpath = __dirname + '/uploads/' + files.fil.name;
          var fileExt = files.fil.name.split('.').pop();
          fse.move (oldpath, newpath, function (err) {
             if (err) { throw err; }
          });
       });
    });  
    

    Html/Ejs文件:

    <html>
    <title> <%= title %> </title>
    <body>
    <h2> Form </h2>
    <form action="/form" method="post" enctype="multipart/form-data">
       Name: <input type="text" name="name" /><br>
       File: <input type="file" name="fil"  />
       <input type="submit" value="Submit">
    </form>
    </body>
    </html>
    

    所有软件包都已正确安装,使用此代码,文件(具有任何扩展名)将正确上载到所需的目录。


    非常感谢。

    1 回复  |  直到 9 年前
        1
  •  1
  •   Chandra Kumar    9 年前

    form.onPart = function (part) {
        if(!part.filename || part.filename.match(/\.(jpg|jpeg|png)$/i)) {
            this.handlePart(part);
        }
        else {
            console.log(part.filename + ' is not allowed');
        }
    }
    

    资料来源: uploading files using express.js and node, limiting extensions