Nodejs的上传模块formidable

nodejs中上传文件使用formidable对于一个nodejs后端开发者来说非常常见,从npm库里面的下载量和githubs上的star数就可以看出这个模块上传功能的火热。

 

使用formidable的好处

快速(~500MB /秒)
自动书写到磁盘
低内存占用
错误处理

很高的测试覆盖率

安装

npm install formidable@latest

使用

1.表单


    http-equiv="Content-Type" content="text/html" charset="UTF-8"/>


action="/upload" enctype="multipart/form-data" method="post"> type="text" name="file1"/> type="text" name="file2"/> type="file" name="file"/> type="file" name="file4"/> type="submit" value="Upload File"/>

2.route
var upload = require('./upload');
router.get('/upload', upload.upLoadGet);
router.post('/upload', upload.upLoadPost);

3.操作
var querystring = require('querystring'),
    fs = require('fs');
var formidable = require('formidable'),
    http = require('http'),
    util = require('util');
module.exports.upLoadGet = function (req, res) {
    res.render('upload', {
        title: '文件上传',
        success: req.flash('success').toString(),
        error: req.flash('error').toString()
    });
};
module.exports.upLoadPost = function (req, res) {
    var form = new formidable.IncomingForm();
    
form.uploadDir = "./public";
    var response;
    form.parse(req, function (error, fields, files) {
        var file = files.file;

        var dir = path.join(__dirname, "../../test/a.jpg");

        var target_path = dir;
        try {
            fs.rename(file.path, target_path, function (err) {
                if (err) {
                    console.log(err)
                    response = { url: "" };
                    res.end(JSON.stringify(response));
                } else {
                    console.log("上传成功");
                    response = { url: target_path };
                    res.end(JSON.stringify(response));
                }
            });
        } catch (e) {
            console.log(e);
            response = { url: "" };
            res.end(JSON.stringify(response));
        }
    });
};

你可能感兴趣的:(nodejs)