Как просмотреть двоичное изображение, сохраненное в mongodb [duplicate]

Это смутило меня с легкостью. Вы можете просто передать String, удерживая JSON в конструкторе JSONObject в пакете org.json по умолчанию.

JSONArray rootOfPage =  new JSONArray(JSONString);

Выполнено. Отбрасывает микрофон . Это также работает с JSONObjects. После этого вы можете просто просмотреть свою иерархию Objects, используя методы get() на ваших объектах.

6
задан Hoa 29 June 2014 в 00:58
поделиться

2 ответа

Вы пытаетесь прочитать пустой файл. Проверьте свой код для загрузки файла с диска и проверьте файл PDF.

Пустой двоичный файл будет выглядеть так:

> console.log(new mongodb.Binary(""));
{ _bsontype: 'Binary',
  sub_type: 0,
  position: 0,
  buffer: <Buffer > }

Двоичный файл с содержимым будет выглядеть как-то например:

{ _bsontype: 'Binary',
     sub_type: 0,
     position: 7867,
     buffer: <Buffer 25 50 44 46 2d 31 2e 34 0a 25 c3 a4 c3 bc c3 b6 c3 ...> }

Вот полный пример, который сработал для меня:

var fs = require('fs');
var mongo = require('mongodb').MongoClient;

var pdfBinary = fs.readFileSync("testout.pdf"); 
// print it out so you can check that the file is loaded correctly
console.log("Loading file");
console.log(pdfBinary);

var invoice = {};
invoice.pdf = new mongodb.Binary(pdfBinary);
// set an ID for the document for easy retrieval
invoice._id = 12345; 

mongo.connect('mongodb://127.0.0.1:27017/test', function(err, db) {
  if(err) console.log(err);

  db.collection('invoices').insert(invoice, function(err, doc){
    // check the inserted document
    console.log("Inserting file");
    console.log(doc);

    db.collection('invoices').findOne({_id : 12345}, function(err, doc){
      if (err) console.error(err);
      fs.writeFile('testout.pdf', doc.pdf.buffer, function(err){
          if (err) throw err;
          console.log('Sucessfully saved!');
      });
    });
  });
});

Я добавил команды console.log(), чтобы вы могли легко увидеть, где проблема.

7
ответ дан Christian P 25 August 2018 в 22:24
поделиться

Конечно, похоже, что что-то пошло не так в спасении. Ниже приведен полный рабочий пример для сравнения с:

var fs = require('fs'),
    mongo = require('mongodb'),
    MongoClient = mongo.MongoClient,
    ObjectId = mongo.ObjectID,
    Binary = mongo.Binary;


MongoClient.connect('mongodb://localhost/fs',function(err,db) {

  var name = "receptor.jpg";
  var binData = fs.readFileSync(name);
  var object = {};
  object.name = name;
  object.data = new Binary(binData);

  db.collection("test").findAndModify(
    { name: name },
    [],
    object,
    { upsert:true },
    function(err,data,newObj) {

      if ( data == null ) {
        console.log(newObj);
      } else {
        console.log(data);
      }

      db.collection("test").findOne({ name: name },function(err,data) {

        fs.writeFile("ouput.jpg",data.data.buffer,function(err) {
          console.log("done");
        });
    });
  });
});
1
ответ дан Neil Lunn 25 August 2018 в 22:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: