2014-02-21 158 views
0

我們項目中的一個模塊是使用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 World\n"); 
}).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(); 
     }); 
    }); 
}); 
*/ 
+3

那麼,你的問題是什麼?它是如何顯示圖像? – 2014-02-21 07:02:41

+0

你可以發佈你的「動態」代碼,並告訴我們,你有什麼問題!? – heinob

+0

的問題是 - 如何將圖像直接從網頁發佈到數據庫並獲取一個唯一的ID – user3232014

回答

0

您必須通過XMLHttpRequest從客戶端發送圖像到nodejs。然後像存檔一樣將它存儲在mongo中,您通過fs.readFileSync讀取。

+0

好的,謝謝 – user3232014