Nodejs的上传模块formidable

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

 

使用formidable的好处

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

很高的测试覆盖率

安装

npm install formidable@latest

使用

1.表单
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html" charset="UTF-8"/>
<head>
<body>
<form action="/upload" enctype="multipart/form-data" method="post">
    <input type="text" name="file1"/>
    <input type="text" name="file2"/>
    <input type="file" name="file"/>
    <input type="file" name="file4"/>
    <input type="submit" value="Upload File"/>
</form>
</body>
</html>

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));
        }
    });
};
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值