关闭搜索(ESC)
搜索标签:

node上传(formidable版)

2015-04-02 浏览:1460 标签: nodejs formidable

描述

上传这东西,真心很重要,之前写了file对象上传,现在写一下,ajaxfileupload+formidable上传。 npm的地址请看formidable

准备

js

<script type="text/javascript" src="/javascripts/ajaxfileupload.js"></script>

nodejs

sudo npm install formidable

开始

$.ajaxFileUpload({
   url: '/upload',
   fileElementId: this_imagefiled,
   type: 'POST',
   dataType: "json",
   success: function(data, textStatus) {
           if (data.error === '') {
               alert("success");
           } else {
               alert("wrong");
           }
   },
   error: function(XMLHttpRequest, textStatus, error) {
       console.log(error);
   }
});

上面是js端使用ajaxfileupload上传。

router.post('/upload', function(req, res) {
    res.header('Content-Type', 'text/plain');
    var form = new formidable.IncomingForm();
    var fields = [];
    var files = [];
    form.uploadDir = "../public/uploads";
    form.keepExtensions = true;
    form.on('progress', function(bytesReceived, bytesExpected) {
        var _now_progress = parseInt(bytesReceived / bytesExpected * 10000) / 100;
        console.log("now is " + _now_progress + '%');
    }).on('field', function(field, value) {
        fields.push([field, value]);
    }).on('file', function(field, file) {
        files.push([field, file]);
    }).on('end', function() {
        console.log('upload done');
    }).on('error', function(err) {
        console.log(err);
    });
    form.parse(req, function(err, fields, files) {
        var file_path = files.k_addbutton.path;
        var file_name = files.k_addbutton.name;
        var new_file_name = Date.now() + "_" + file_name;
        var new_file_path = form.uploadDir + '/' + new_file_name;

        fs.rename(file_path, new_file_path, function(error, callback) {
            if (!error) {
                console.log("rename success");
            }
        });
        var data = {
            msg: 'ok',
            error: '',
            new_file_name: new_file_name,
            test: {
                name: "123",
                test2: {
                    ok: "right"
                }
            }
        };
        res.end(JSON.stringify(data));
    });
});

以上代码是nodejs的。

总结

这个,这个,这个,原理其实很简单,不过就是一些方法而已。真正想看全部源码的,请别当程序员了。买水果或者养宠物去吧。 其实吧,我觉得formidable还是挺好用的。但我不常用,因为我们后台是java~~~T_T

添加评论