从客户端网页上传图像



我们项目中的模块之一是使用 nodejs 将网页中的图像上传到 mongo 数据库。我们已经完成了与 mongo 数据库的连接,并使用图像在系统上的物理位置上传图像,但我们无法从网页动态上传。

我们将图像转换为 base64 代码,然后将其保存到数据库中。MongoDB返回一个唯一的ID。我们希望整合这个过程并使其动态化。我们用于连接到mongoDB并从物理位置上传图像的代码可在此处获得。

var MongoClient = require('mongodb').MongoClient, 
    format = require('util').format,
    fs = require('fs'),
    http = require('http');
http.createServer(function (req, res) {
    //should be triggered by the user upload button
    put();
    //triggered after the upload/button click
    res.writeHead(200, {'Content-Type': 'text/html'});
    MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) {
        if(err) throw err;

        var collection = db.collection('test_insert');
        collection.find().toArray(function(err, results) {
            //console.dir(results);
            // Let's close the db
            //ret = results[0];
            console.log(results[0]);
            res.end('<img alt="sample" src="data:image/png;base64,' +  results[0].image + '">');
            db.close();
        });
    });

    //res.end("Hello Worldn");
}).listen(3030);
function read() {
    var image_base64 = fs.readFileSync('./uploads/2088-1nqsb3l.jpg').toString('base64');
    return image_base64;
    //console.log(base64_data);
}

function put() {
    MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) {
        if(err) throw err;
        var collection = db.collection('test_insert');
        collection.insert({image: read()}, function(err, docs) {
            console.log("data inserted");
            db.close();
        });
    });
}
function get() {
    var ret;
    MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) {
        if(err) throw err;
        var collection = db.collection('test_insert');
        collection.find().toArray(function(err, results) {
            //console.dir(results);
            // Let's close the db
            ret = results[0];
            db.close();
        });
    });
    return ret;
}
/*
MongoClient.connect('mongodb://127.0.0.1:27017/test', function(err, db) {
    if(err) throw err;
    var collection = db.collection('test_insert');
    collection.insert({a: base64_data}, function(err, docs) {
        collection.count(function(err, count) {
            console.log(format("count = %s", count));
        });
        // Locate all the entries using find
        collection.find().toArray(function(err, results) {
            console.dir(results);
            // Let's close the db
            db.close();
        });
    });
});
*/

您必须通过XMLHttpRequest将映像从客户端发送到nodejs。然后将其存储在 mongo 中,就像处理文件一样,您通过 fs.readFileSync 读取.

最新更新