node.js - Node return image stored in sqlite blob -


i'm querying api using restify sqlite database have places table has following structure (id integer, name text, image blob) i'm trying output response result image (the blob contains jpeg image) haven't succeed far. in browser after made request i'm getting the image 'http://localhost:8080/place/1 cannot displayed because contains errors i'm getting in console place name.

here code:

var restify = require('restify');  function respond(req, res, next) {   var fs = require("fs");   var file = "./data.db";   var exists = fs.existssync(file);    var sqlite3 = require('sqlite3').verbose();   var db = new sqlite3.database(file);    db.get("select id, name, image places id = ?", req.params.uid, function(err, row){     console.log(row.name);     res.header('content-type', 'image/jpeg');     res.end(row.image);     db.close();   });    next(); }  var server = restify.createserver();  server.get('/place/:uid', respond); server.listen(8080, function() {   console.log('%s listening @ %s', server.name, server.url); }); 

update: image returned without troubles when create blob using same node-sqlite3 library. if create blobs using ruby or go (the ones had tested) node-sqlite3 decoding doesn't work expected.

whats going on here? appreciated.

use varchar field , store in image string retrieve byte array. see below code in can store image , retrieve. without using blob. easy method you.

 uri selectedimage = data.getdata();          imageview imageview=(imageview)this.findviewbyid(r.id.imageview1);          getcontentresolver().notifychange(selectedimage, null);          contentresolver cr = getcontentresolver();         bitmap bitmap;         try {               bitmap = android.provider.mediastore.images.media              .getbitmap(cr, selectedimage);             imageview.setimagebitmap(bitmap);              bytearrayoutputstream baos = new bytearrayoutputstream();             bitmap.compress(bitmap.compressformat.jpeg, 100, baos);             byte[] b = baos.tobytearray();             string encodedimagestring = base64.encodetostring(b, base64.default);              byte[] bytarray = base64.decode(encodedimagestring, base64.default);             bitmap bmimage = bitmapfactory.decodebytearray(bytarray, 0,                     bytarray.length);              mydb.execsql("insert imgtbl values('"+encodedimagestring+"');");             cursor c= mydb.rawquery("select * imgtbl", null);             c.movetofirst();            string img=c.getstring(0);            byte[] byarray = base64.decode(img, base64.default);            bitmap bmimg = bitmapfactory.decodebytearray(byarray, 0,                    byarray.length);              imageview iv=(imageview)findviewbyid(r.id.img2);             imageview iv1=(imageview)findviewbyid(r.id.img3);              iv.setimagebitmap(bmimg);             iv1.setimagebitmap(bmimg);           } catch (exception e) {             toast.maketext(this, "failed load", toast.length_short)                     .show();              e.printstacktrace();         }   

Comments