Automation Professionals' Blob Server Module

Thanks :laughing:

how i can get your module?

@Francisco_Ochoa scroll up a few comments and you'll see the download link

where is the link> i didnt see it , if you can help me i will be very thankfully

It's literally 6 comments up from your post

Automation Professionals' Blob Server Module - 3rd Party Modules - Inductive Automation Forum

1 Like

how its work? how can i install it?

Have you read this entire topic? And the documentation linked in the first comment? Do that first.

Quick link to comment #1:

1 Like


i dont have idea what more i need to do , i never used Named Queries

I don't recognize that screenshot. (SSMS?)

Don't use SSMS for this.

Do you have blobs loaded into your database yet? If not, do that first.

Meanwhile, review all of the NQ videos in the university:

That's the "query builder" that's included in the Designer, which attempts to provide a graphical builder for SQL queries.

@Francisco_Ochoa drop out of that. It's worse than a crutch - it's a "mobility aid" that will actively cause you harm. The SQL involved to use Phil's module here is not complicated, and you'll be better off learning it properly.

2 Likes

Huh. Never noticed that. Wouldn't have used it if I had. :man_shrugging:

1 Like

This will be a great tool if I can get it working, thanks for your contribution!

I'm hoping for some pointers. All I am able to get when testing the url in chrome is a broken image icon:
result


When I check the gateway logs (assuming I'm looking in the correct place, I'm still learning), I'm not seeing any info RE blob server except when I start/restart the module. There were also no messages in console of chrome. I feel I'm missing something simple...I've tried several different variations to column type, the INSERT statement, etc., to no avail.


Table T-SQL:

CREATE TABLE [dbo].[parts](
	[PartNumber] [varchar](20) NOT NULL,
	[image] [varbinary](max) NULL,
 CONSTRAINT [PK_parts] PRIMARY KEY CLUSTERED 
(
	[PartNumber] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO


Test record INSERT T-SQL:
I don't currently have access to perform BULK operations, so I encoded a test image to base64 using Python and performed my insert like this (simple smiley image)

INSERT INTO [parts] (PartNumber,image) VALUES ('smile',CONVERT(varbinary(max),'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAQAAAD2e2DtAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAB3RJTUUH5wQIECQME9kBSAAAAAJiS0dEAACqjSMyAAAjJUlEQVR42u1deZyNZft/zpntnPPc1/c7gzGDZCtZk7UUUooUifRK0Wpp0YIWfgplSdEiyhvtva9SaVHS8hayVWQLlbUyZN/XYWZ+f8gnMpj7Wc55zsxz33+fmee+ruu+7mv9XoZRqFcoKEkMwRQhmcbiTGcGM82KqK7qSWNpjtZoLc2liaovNc1KzGQm0lECxZAKQCGMJBUw/BVPK2yYKUhlaVRCNdaSZujEB/A03uAkTuci/s6dzGHeSfdBrMfPmIPPMQFj0Bcd0Zg1eBbKIl2pSNCnr2eXSmRxnM36bI7b+QTfxVys48FTsLqgO4dbuQiT8SIeZBs04XmoIMVUok9xr6xAGKiKy3Abn+IkLuVeB5h+0o0N/I4TMAxd0II1Jc30dUIMVyIq8HLeiRGcxJ+5z03Gn7D3cwWncCTulVaowhSfGVG986oELmQXPM0PuZDbosr4f+5dWMbPMBJd0cCkzxrXFxSb8XFO4jxmMTumrD92H+I6/oD38SgvpfK55Na9r4tH8RWXcwdzPcP6Y/dhbudyTpFeKOezy9HFEryVXzKLu07pwnlFDHZwDd6Uq4ywzzl7jp0hiaaSCzgav/NAHLD+eDHYh6V4GGchxfcUrNx5g2FUQhfOdMSXj93eiJflEpSKJId8pmrcfYXqvBcL4pr1x7qMX8pNqKx8GSiQnU80wAOYW0iYfzSAlINvcAfqKvE5fCrmA004kD/Eudo/2T6AmXgETcSPF+S3JIKmfII/RDmiF+29j3M5jI3pewjHMT8BTfgcf+SeQs38o3sP5+JJqSO+d/CX4q+IkfzJ3SSO5/Yuzsdg8wzf3SvO3lxQxJh/dO/EXHYtsuEiMSSMf+E77vFoYDcaO5fbMRF1YBQxuzAckBScjw8KqbWvHywayDNRdEpMGMSZ6MFVPuuP2d/iKqFZFOoPQ2Fcynf8u3/C3ozHWb3QPwUsgx5c7bP7JPsztEQhridIREOO4a6YFm7s5lZu4B9cyWVcyLmcxZn8DvO4kEv5K1dxbYxTzivZH5UL591Pxc2cxgNRJugWLuFUvsNR6M/7eAdvQ2dez3ZozSvQDE3YkBegkTRFM7TgVbia7XEre3IQxuA9TuUSbolBmGgCWpqFrcpQKuFJruHhqJAwh5s4k29hEG5hS16EWqiIkmbEKGDkTSVCVKachVq4CC15I/rwBX6CRdwWJd1wEAtxP0oWHu4HpT4+5A7XM265zOJnGIT2rIdzWEalRhxwrSQoChmogOpsgGv5JGdidxREeCNeUzWMwhAsRhKaY4HrVv9veBFXsiJLikiSa3oskWApVJOb8DJ/5SF3qwgwX1qZyfHOfhPduc2lWF8us7mHK/mcNA2nIlmC0Um2m4YkIJlh1sYgLuFuZrt2vp3oATN+uR9ABkbDHeLs4wYuxnPqYiMpts8b63Eo5vFPd9LYyMVIljTiMUAUSZRa+NgFs+kQN3ABXpRWEvHKWc2wXM5RXMBNLpi5OZwoNeOuFxGmtOBMx1/JfVzE8bhLVTa8R5BEdQ7uxwf81fGGlUOcjmZxVVGI4rydix2+DXswHUNxmUr18slVJttyJOc4bPQexjxcJ/ESI2Qp9uEaZ8M5mMSeUt+IC5vYDOMiPMY5jga9criYNxPxwf4hXOfozZ+C26VqfL2CoQguRB9+76AmyOEvuBOpXlf+6RjBzc69fpiPe6SqisfAaECJ1MWDXOiYJZSLP3C/eFkLQOE57nRQ8T+mqkoc+8FGAEpV5UAHMwqb2Y8Rj542koBXud8xhfc2ayJsxH+JRABh1OJkxxzivXyEXgwRAxzrUPxrN+aoZkYhW9Keix0LFj3iOS2AdI5yxOrdz5/Zm4WxMCZgZmAw1zhiFu5jf3iJRjgDzzrw9udwHd+SCyNJRiFdSEEzTOQmB3IHW/Ag0rzi+JXlCG51QKpn4C5mGoV8oRz6cL4DemAt7mUxLxwog49xo+13fwOfx4VMMorACkXQnK87AG61mndLrLUAwB78w3bOa5bcjAyjCC2Wx91YYVsEVkjnSCzNQZWCa/mrzUNkYwzqGUUOeTMUwqX8xnZoaIE0UwmxcmyCaMiFNv3brXgIZaRIAjIjgJoYYzN3eBjfSLUYRUtUecy0yf4VcoMpUmTxuFVAMvGQzThhNsYjPSavPz6yxf5D/B8axkx9eUUEjJQQ2nGRrdT5YTwp0e4xlhCG2AtoYjyqGP46cpka8gs7YTTkys3haFpRkSTcADtR/x0YRx9N81gRqI2JdlASsEkaR9ESwKVYbSOatRVPF/6Aj/ZjUBmv2xCBXM6WaGlU1ODXNnLc29jfM0FMb4nAmXjeRrpoH15RpaLx+mfy3zbAnDbi4YjpM/skT2sJPGlDC2xGH7pNWzMF93K95U9cj3sEPqNPoV3TMdjy9crlz2znsiXAy/mjZefvd3SL+Ow/XXCoFAZbfgiy+TGqu6n+z8bbliNXG3GX6QOlnp7GASmNJyyLwB4MoluFowT7WU5jbkbvkD9Lo6AikIHhlkVgnVwXdCO8xiBbWHz9c7kBD4qPla3jEaRhuGUslRmoA6ctgVAAFTnJIvs3c6DpW/66eqA037RcYjtMnC4VkRB6WoxX78QzTPUZasEgrMbJFi2urXKNo400YqAhf7cId/LvSEmfmRbp3oRzrflcmKEqOVgpoiL4yGKM+n1V1mekDRFox9+sPbzydIJz3QPoaNH6Xyg1fSbaWgnoYtEY3I4mTt3/DIsDXDZJGx8T3zb1TQyENetriuGM58XHLPmk2XhA+Z6/feobKIu3rekA3uiE+j+XSy2lfsfxDAR8BjrAgSDq8gcrjTaYGbabd40k41ULtSq5nMF69Nnv0EpKkNawUny/DX0ith7hAK/mcitpH+lgJPiMc9AbiPA+S91Xc1UNG//WLI43LIQidnGIX/LhuDFYGi9asMV2cjAsw2sE5ToL9/8gP2BVn2Eu2AKNONtCWGgWG1hVO2Xwqn7pF35Ba59ZruiAZPay0IW5kwOsoY0m4F8WolC78CQiPrNccgnL8n0LIbkZPN+KvJ2J17QVTg5moqLPKBeNweYWLuUe9tGfQxJEK/6pX+8v7X0mufoMhCxVC81AHV2DoyRGaYd/cvGW8mfium0KFucCbQE4gDu0oGaTDZ5v4f7vMcv7DIrCM9DWgi8whWdp1OOSfEq/RZF9fOZEyRicrO2bHUK7Ao+mlACqca22AMxX6T5roqQD6kIfjfW9Ak8hQhIe1P7zu9FBknzWRMkOiGCoboQWu9GogEgMSMMibRUzScr4jInaExBANQs1GqNZMLR1XqVtZGxBh7gfbxRfj4CJe7TdwSyzQM2jAX6sff/fkQruHtgsKTVwJdrwNrRFc6mjPNdjpETqoDna8ja0wZVSw3S5FBY1+LU2n24tyB+upp12/JM3Ktfuv5kqLfgEJ3M2l/FXruVyLuH3nMyhuDLRE3CpicSVHMrJ/J5LuJxr+SuXcTYn8wlpYbpWEC9h3KE7ixGzCiIAg7TNi3elkku3iujISVyV7zzfXVzNb3B9zA2y6/kNV+dTuJnDXVzFSeioXBJTqYWvdDM16nRZAZpYrBkB3Ma7TDeKP4KRKhjPrafMR+ZwEydI7Zi9xLU5gZtOaTEd4laMj1RxYwZoKIRHNFNDhzDydALQlps0i78+pQvQJJIsV3NrgYzRHC5HJ0TdBEUyOnF5Ab9wq1wtLnwhL9atFcTyU5bqqCDHavajbeMDzkMSSAS9qDOhNwsPRqIKnBwphgeZpRUn6eX8nMOwiVGaD/Zm6XAqwpflj5r3/1s63vphhtFVGyXjT96DqHkGEN6jnSvZg66m46kyXqtZs3UA43DyBxudtaQ6j3v5rOMov4loy1UWCtGXo71EZbiUpKC9hVK5XK5CW6eppTLxgV7TLubJyQD6Iin4t+YDsJItHbf8z+V0i33I36iqUcDKC6iqFkGeD3O6OtdxbdRTc0rbWpysXURV5jRNiNLPna7+DYXxhOXZI9no6/6MMTHR1zJMzk48EXL4GZAa1Avc78eYk+ghXks9BPvt6Ok4eRtzrkXi5jGPa1SNkKs6IBRQNWxNRZ0rjR22mJLxhmbrztdmhfxDwI/rYdRhNco7TN4IhtqbrIVBcLUhBQkYZG8wDoaGHPYGcL2m6/4zr87v7mXybS3T6zDGOz2/TipbxSE45nCuRgSYzJ9tTkf5SCo77JKmcYkW53axX77KF9/rvSVyneP3qxV/sTt5TJ3nasrnPNsDIH9BK8fFcriWVZLLt1SJf5I+wG56gwuw3nDYnDGDfMD+TD3c7+oT0NOBqX8PmA5rTrOuVtgsj3Pkon/ef8UnNY8xxvEAUDE87YAAjHJVAF514AufNh2PWmpqzj958z8Pdhbf1zuGNHdcvWZijAP3a7KrNsBkBwRgjHIcLF/z6hzmwH+0jLIJ52sdYkvIcSlGRb7jgADMdlUA5jnwhe843z0ll2jGTt/AceBdAVzP7Xq2LBwPu+IcfOgAeRe7KgCLHfjCz1HD6e8KpWpOb/wW9Y99fU301ZMg3A3HZ9RIGbzsAHm/8vwT8JY4Pi6HydSzTtby2B5ulOUbmjO+z3Me/0eVxGgHyPueq0bgGw584WjleL2gJOBGTWD5bvL3Fea5nK3183ks7YKPncQ+DpB3iKsC8JgDOqqPcryDQhmoppfIw3Ap/vexGkMLBxwvuTO0GO1sxdmPeCdXuBoIamSb/Vt4kyu0Kw0tM54TcbSSMzGIdpo25O1wJfOO8/iVTfJug6uw9EixCN369/4fXIlVIg3jtL5jAese/aniQ5pNRg1dyrUpPGNvli7GwtUBikjEM7bYfwjPuTM4AyHeqTm879KjBkQ6XtL66ffugUDhKi6xo15VbdfTwbVtzfpdyetc+rSAagqtTCo6/jVtFOU0e0zegGt9gCEToy0nhA/hOfdnkolghOWpifswTrnWMcSaepcHj+AItVhF0/R6DC4OgJBGXGBxKumP0iDkPjh1QGppls7+nYVbII1cfJ7KUyuZjleQceSHdbQqSnJwi+lmI3gSunKtBRFYj26IymAamLjdkim4GXcbLlJO0jFSL2TGMw3DMBNwhWYn8JXuEtgUPKr9DOzAMJVhRGmhGPvr9uVxPx5XruKnmiZ6a33REp5tGAaS0U1vCIRbPsBxsqxXeLUTz5lnRnF6tqHKYLheEy0GicsIKqEgrtepp8YW1DAMAxEM1oQbqu4+gSUVXQtcofgnHo2UNqKLTR5AMTxc4OaQvXhEojA4C5djnc5jLucbAQOCNzV9gDPdP4ppRFLUJVzMw6exBg5xkbSWkBEDaHqkSDPOP61HcJiLpbWKRKNtCQ30aqpxrUo0mMbpWgIwXKLWhafS0JU/cDsP5CMGh7iDyzDAiO1EQhPduIw78jWjs7mDv6CvRA08i+do+gE9JWSgBLTqXPFwJKqduFIOnfky53Ils7ieu7iN67mGi/ghuiYVMzywkorhVrzMhVzFLG7gDm7nOq7hfE5AF+cTv6fUAGX5mtZlfoIRAyWh0+Z4AN1ictFKSxNcj1s4hH1xM1pEynhsIEVCKEMuQUd05wA8ghtwhVk6+h8h6dRzBF+iMpiplUbcgA6Gvzy6TKWXrsa7gIFKmrFsfxqAdwUgEb20BOBLpBpyvpYALMJlPqG9u9hVR59jLooZcqVeSwEu8snsYQG4QadPECtQwsD1muUMtX0ye3ehrU6WAptQ0kBHLQH4BP5AKC8LQCst7JK9zDDYQcts+ER8AfCyALTgUq0LXcqQ9nqNV1LdJ7OHbYBLuVCHn6qiIe00U0H+QHgva4AmesiBUtNAGy0B+ALn+mT2sAZoqNfhoc43cJVeFQnO88nsYQ1QXy+1J5cY0lxLAKaink9mTwuAFtKbambIxVpewEy5wCezh5+ACzhTSwM0MdBQrycAjXwye1gDNKIW0pO6wFB1tTTAj9LUJ7OHNUBTvZJ1VduQGnrwC34yyNMa4DI9CAtUMyJna+LwtfTJ7GENcIUejqFZyVDltARgBfx6AC9rgNZacL+5zDSYqTV25A+288nsYQH4FzWQHrAXGQbStcAhtrGzT2YPC8DtWqM2/mC6geJaPaXZuCsWNfj+KtAK4j6trsqFLG4wjTO07Ma+KSk+pb25IhE8qhnXTTNIvUmheMrdFsdjjpMoldEJPTmAQ9hbmiSE4oURCWFpyt4cwgHoiU5ydiQxOv9XFddDDMUHoCGC17WkZhyjMCZaGVITo7iE67iZO7iLW7iSc9jXPMPzjtiZ6MfvuIpbuIs7uJnruATPSQ0Vhf+NMtRCWsTLEAOmJs7sezjL/SuE7sg6ob41l7sxD9d5rCXk2JWETlzA3Se8w/uQxS7u205yNiZqCcBgiRiSgvv1RjOxlpuHMIOqHCaeFLIilxvRJ6S8yP0UYgC3nNQI28//ohRcRTBhPX6nxcvuTDbMRGmr9aNl7qaDVG1MO03H7Sb0Nj03PdxMRf/T4C1n83O6WlGJy7hWSwNciQTDCEh9LdCjnbzaPWUmxfFqAQBrVuEalegl9qtk3lCAEMxejnYPXykc5L90QPaQLXWOyE11bNCSm25u9QerRNxeMBnG29Htuz2t4FYq4LSjFWjvmhBG9OaZIOuvEn9U0gQZHQaX2rJRju8WGBOoC8JeYT8j7J7PAPn8AS1eokt4AUjnc1oCMPcvsFicgU+0BGCCWxghaMvVBY9iyflm0BO3P4hG/Emju/Jyl8SwPPXmLUz8C+8RJTRh2n9wx5RBiP+nY43g/VAJT8TfM/mpFlhkD3ccWW2gyOF/aXIxNWdhbWcDV27SGXhFD3eTo73g/RXIbD2W8CNMN2KpAdGFiu1mHomtRoK4GjrjmnNxrbhgg6MyP9DE3tuD542YBoih+LLevFXmYayUdkV/3qU5MuLK8FFvjo00J84MowuYvKympUqPisC4JBWboEDEUMXwHwvIxq+zrAsCkKY5cGc5/67vRg29anJ8i0wXBMDa1LB9fEPOCEfdHAwHpTze0xzbfGSPpguA0SiDBVo8/AJV/v5xWb2EEHaiivO3ThXHsxYxuMdLTUQVuwwpUpMTLLE/B/3Cjj9bpv7ImDFS6u+fAwM037EOzk/pZiLvLqA3fWKZypdsQ0SN/cA1+MriaIuN6ORCEChBOuuJIXupY8QwiJu0SonyONqNG6fb2HR8vTL6SBXleqaQCazGvjaGXH8hLrTXIllzntlmXnv8sS7V9CEXuhGHo8n+egMsj9u7MAmdTVf1QCQVN/ETzVHNx8806mdGXLBIUpml2eF14fE+eBVo1QVxvztIIVIDX1scF3Fk/4ZxbG64Yg9ICC3xiq2hUbn8yh2ADWmm+YS/I8ePr1Wk5jAkPODGQcxE3Ml1Nkicx2z+xDG43NmaAQBXchyXWh4Wc2RnoYvpShaTz+sJIoaGI/+MZ/fgTr1UgktvbCrf1upUyO+e7eMafIqu4sQIiWCkLO7gFP6mZ2XnOzLiDaFLVPtVc2JYtxNS+tIKyzRf3Gou2djVsdwmqY/k3XbyN0yULqqU5Re/LO7Ex/iDO3UGMZz0yvzMyi5R7AJNE34eLjnRkagMvTjcQT7iUnYtwE7c5oAIHNEGh5mNhXgVd6AOi4FQCCMZiWZCOBgOGIYRCAcQVAmSiGSEoZDK4qgnPfAmf2E2c2xZJMeZf9LRpetv4FlNl/Qd5HMpEvGM1guXy1lwrUMAI+wNkDxpFcECTMQI3I0b5Bq5HBdJbakjjdhcrsGN6IFn8TEXW4xFnC5SMdw1zyRND/Cf+/h4/u/IbXoVZVznHmxsgsJkJ9SuR/ZhfJoQce2ydNCBh2UeV+Da/FVvXc2a0j0YZrgUg1eGVOc05hQK9ufwa1R1K2ElSXhNMyQ9DfnbIko4QevW5XKOKu+WXEuiNMbMQsD+XMzAhXAtQokqetCQPMBxcrI4CftpGl9/ort7UTdJkVaYG+8CgDloKS52U+JObtB7uHnLyf/YJdRzwLI5Xrk5RtZEe86Pa/b/gDZuFq+aaRivZy5j/l+loPkSXPCl5ru7hFe4mnczcR0Xxa0AzJdrJOIqfVrrQcLwAF8/ZSwSffXigTyAJw1XM/EIsSXmO+aNR9P0+wHNxdWCtbCJkZru8hbceGpy19AsDsvjVNR1OwGrqnKKzfBwtPcBfIKzxOXkNJtS00bCSnW6rgRM0nwE9qFPxH3ICBPPckvcsH8LRhgRt0kSDuFRzWtxCC+cXuXepF3oNBV1olCGE5BbsNSV+KDTMb+lvC0aMDqopznzNY+7efrB35KhGQ/M4z7cwyi0aUWCqgE/tlEwEo29nR+rBpEolKgiwnu1C9JnF+xPj9I+9lRGZ45IwKyAQVzoUXvgIBdikFkhKiBaAamFGdpf2KWgqmW/tg7oLlFq1RRBC47jeo/5Bblcx3FoIVFqUVAKvbSf6iwUDNxHRfC5NgFmsbwRrRWQstKZU2wXaDi393GydJayUQPQC5jV9LoAmMc8vFjA7K0koD1ytd2enhJF+LhQMqvyDngiRIQF7M4qoSj2Jaiw9NctTsNuNJKCCahpoLyFAOwfqGhEdSGMKngUWTFl/1o+gnOijVSgztFCdz0K7lXwfiQx8ZCFV/BFI8pLDImwCodyVUyYvwKDUAURRPvYBl7WtYBwCO1Y8HJUZaCWZoVgHvN4WDWIOi0MGgySvAafcCP3R8E0zOF+bsBHqnUYEowFXJnZwEKpzBRW0ipIk1QM1C+BxjeIIXoX6vAxzObv3OlSIUkOd/A3zmB/VSt2pxQTX1sITHfXzkqgiQUdsAvdYwzjmKya4DFO4VJucDBacIB/8idORn9pZMQWnSwBt2qm6/KYx28txGolHU9rB15zOE95YK4gFC5mD47mR5zNVZol08cJNFdyFj/EKNyFRjRjfzJ1Hudp67fdfAgWvj2A1prtBnnM416ORbrhjRVUJaUBO7AvR/E//Ixz+Cs3nUaoD3Ijf8ZsfIq3MJIP4zrUkxJG0BsHQjrH6oZ/mcfpsGabqUyMtZB8yUJ3w1MgjjQYZmlW50Vsxc7owT4chBF4Ea/jXX7CSZiA1/ECRuAxPIy72QlXyYWqqlnKc+jkiehOfad3Bx6FxcxkAG2obwfk4FtpaHh4IYlmJE1lSFk5C1VRVSpJWZVhpqVEvCW4JzzKDTHDgnn7rVjP1YIcawEFYx+fdwNCpmgvZPB5C3hE2zHQtBOj5KVcasF42oCbmeQzzUn1L7dwo5WaZDnH3vuZwFEWzI5czsdF9GcLOWXFBHgh51kIcm3G3cquAcsa/MlSfO1DnC2+CDgR+QvgHL2xPkcjs/zMEdcVD1vxpJGLoZImPv9s+zBIxwhYuYJ/OjTmN5yKqZbCKLt5i0rwWWhvhZLR01rlA150LH4hl1tsmV7tXv9wkbH+r+FmS7RfpSo5F1JLxEsWiyX+x7N9Jtp4AOpb7Is6gLscTFObhtSw5A7m8RDHm+V8RlpbqjI/tYiS8BFKOmp/IQVdLIQh8pjHvfi3KuEz08LtL4e3LNY9rmczOmt9KQNl8KplcMRhId8d0L1ypTDWIiBlLgbAeTgiBKkzGOX4sNAm9JGQz1SNR7c4nrWcxv4SNZUbERgm4WbL/XkbcW8o4jO2QG53AOl4yuKDm8ff2CbRrQAcMjjScjX+OrkjBvWTcRj3UyUwwPLt34l+4mahIs/nVMvoXVlypy8Cpwn7BFQ6+ljufzzICXDZ7U7ATVxtufZ2vdwdMn02n0LHpmMAd1huT1uIK1z/xAgxxEaH7p9yj+Enik/maxXDUzYqGDfgHjMa3VmogA9sVNxukB4S9pmdD10zOcKy6ZfHvXheFYvWp16AX2y0YGTxMVXcZ/jxS87gGBsgtTn8ChWiF6NKQEcbOiCXW/lSFD83Hm5/Rb5pYw5JHv9QdaIrryEMsdVqsRfvo5bP+L+oWRcf2lD+eciWNlEvXQcw0VYL1mHOYTOVULT9QmWkpEg7LrYDjI1suU+lxEJtlca3NrvwVuImpKLIFo6pgGTiYW61RcP9fIqMzecH5UIsttmPuxOPo1LRFIFQEDUxxibu2T68hTNjdoRISDpgpU18jcN4lw293ZLhxgqHpBmn2qMdD/IT1Iyt+ULcxdW2u2/n4nqzSBkDqIC78YtNqh3CdLk45n2LKI5e2vCyJzqGv2MgqxqBonH32Zxv2sY7zOE8XBXxQlSV6ezD9ba1wA5OQnuz0BeO4Ew8xPm2sQtysRwdPFNjgRJ43AEEz2yuwHBVufDqgXAyLua73OQAkM0G3CpeSquhOIbaCWUcA8kwG+0LZ64AxMP81dLI+RPbbx8Rr2VVxcRgx5B4XnFvFlHM2N8S33OPQyBWj9KL1VUISl8LjaT5G4V7ZXCkrKQUAs4HJIxaNqOmxwXRpS+CXpXyMHpbaWI+iSZYJb2ksphxbBMElDKrYTA2OUSTPG5Eb3j5gYTgTqxxDK0vGz/ifjlXxWUVkZhSC70w37EZB7lYgzvhdT9JgNuxzEGkvv34FvejfjiuDMNwGPXREzMcMfmOQu8sxW0SD+EyJejEBY4Oft3L6egvjeOjt0CFpDH6c7pD9tDR3Ol83KDiJUpCE6053eGxDtn4Dk/J5VRePjmELTAC3zk82uYgp0orM576KiJJcgE+dFABHk19LuZr6MTSnmT+GbiZr/Mnx099gO+jQSTuSmmDqIjR+njDBbgNazkDw3ARPOMkSghNOZyzmOXCMJtDGMkKRtCIxyVp+D+XBrTs4TpMZY/Y6wIpi574luu51yWk8geQFs/xrxDbY71r6N0HuB3T8DDqKBPJSIiOjaQMSUByREl99MNM7uBB186XJW0R78EwM0EuxEzH38V/2si/cgw6sAoyCXHttVRJADNRFTdgHFY66ufkV+szDQ2kUGAsBeRcjo/KvL9tmMZhaI+6qCQZiqEkB6KIgZRkITNxFuqhA0ZwJnZG4SRb+apUKUR5UZTjUK52wSTMP2Syjl9gDPrjdlyDZmiAqlJOSkbELFDhWSQRkAyWRzWcj8vQFl0xkGP5NTa4pOpPhNVZwQEFHPEWP4up6MgpjqSM9foPfudcfoq3OAqD2JtdcT2vQStegcvYFI3YkA3RmE1xGa9Aa7bFDejGBziYo/lfTuY8rI36cLq9/ITXijIK4+J5GM4NMZ3ytZ8b+RtXcBkX80d+z1mcxe/5IxdzGVfwN25y2Vo5LYoCh8S4zNNlC7oEOvJ7T8389NKeLu2ZahTuFUxkfTwVR6Pgo7U3YDBqB4sCsqoEpBha8asomYTxsLP5KVqo1EjRaZBBojoD/RyoJS4Mew3vk1JS1FCVQwYMnot3uCVKzpUXdw438lVUhlF0cXOS2QGzbAAjxPPezqm82vDx1CWTw7jUhTyal/d+LmL/cDHDX4ZhGExgM77CZUVECPZzEV5gQ/p3/zg9kMqr+QKXOVxL47V9gIvwDFqIj52cX9oF6WzJZ7nC5TxbrPYhLuETuAy+4j/lc1CSl3IQlhY69s9jPzSCj45WEE3ANNRCb/6I3MLAehzGTHRndfgwuRoWgYEIKkgnTotxcsZ+NvIztENZCSmfqfqhIpWgTJzP0fzDtbIr90I8+7ESw+Q8FZYEn/l27YISvB1TmcWdcWAeHuIO/sHJ6GD6Kt/RlaDqoy8/5VJu9KireIDruQgT5X7UNPyZqe4sMyR1eQ9f50z+7qGw0X6uwjSMRVezSsjHQnd/hUNSEzdhBD7lihiLwV4u5Yccyg5SGck+Z6K7klRltEUfjuVXXBnl2r09XMbP+AJ74yrEa99OIdEGiZKJ89CCt2EI38U8m8Crp/PpN3AO/4P+6MzLUAMl/Hi+ZxYSJA0VUZuXSkcM4Fuczd8diiHs4ypOwyvoyzZowlosZ8K/8x5eyYkCZKICq7IWmqKj9MJwvI6POJ2L+Dt3niKicJjbuBrz8TUm4mUOxT3SHo15LquwvJSEwGd7vK1IEEkqBFMEZBqLM50ZzDQrorqqJ42lOVqjtVyORqouqpnlmcmSLIHiSAMhjEiKmagKuUP3/4Msz/qDfd8iAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIzLTA0LTA4VDE2OjM2OjEyKzAwOjAwXbxgRQAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMy0wNC0wOFQxNjozNjoxMiswMDowMCzh2PkAAAAASUVORK5CYII='))


My NQ:
NQ Authoring

NQ Testing
edit: I just noticed every run in testing produces random "Content" value

You should not be using CONVERT when inserting images to the DB. Use a "prep" insert or named query where the image file bytes are passed in true binary format into the table. The SQL would look like:

INSERT INTO parts (PartNumber, image) VALUES (?, ?)

with the name and bytes supplied as parameters.

1 Like

I was using an old Python script to encode images to base64, so when I attempted to INSERT, SSMS suggested CONVERT to turn that long piece of encoded text into a varbinary(max). I threw CONVERT in there which satisfied the query, but was not the correct way to handle it as you pointed out. I had a feeling the INSERT wasn't right but couldn't figure out why, makes sense now :man_facepalming:. Your "prep" comment confused me at first as I was only using SSMS for the INSERT, but I got it now so thank you!


FYI, what I used to INSERT image to table:

query = 'INSERT INTO parts (PartNumber,image) VALUES (?,?)'
partnum = 'smile'
picfile = system.file.readFileAsBytes('C:/temp/smile.png')
system.db.runPrepUpdate(query, [partnum,picfile], 'IGN_DB')
3 Likes

Iā€™m trying to use the Blob Server Module ver 1.1.0 (b231421939) to retrieve a PDF from a Sql Server table and display it using a perspective link component. The Named query testing tool has no problem retrieving the PDF, but I cannot get any browser to retrieve the document.

Using numerous variants of this url only generates a 404 errorā€¦

<correct gw designation here>/system/blob/HelpPdfTest-T67/HelpPdfTest_2?file_id="Check Scale.pdf"

<correct gw designation here>/system/blob/HelpPdfTest-T67/HelpPdfTest_2?file_id=Check#20Scale.pdf

<correct gw designation here>/system/blob/HelpPdfTest-T67/HelpPdfTest_2?file_id=Check Scale.pdf

HTTP ERROR 404 Not Found

URI: /system/blob/HelpPdfTest-T67/HelpPdfTest_2
STATUS: 404
MESSAGE: Not Found

There are no seemingly relevant messages in the gateway log.

Tried numerous things including ā€¦

  • Different gateways
  • Different Browsers
  • Different PDFs
  • Different file ids (with and without spaces etc.)
  • And just in caseā€¦
    • Using Integer ID
    • Renaming each individual object one at a time
  • etcā€¦

Any ideas?

Encode spaces with %20, not #20. Might need to encode the hyphen in your project name. Do not include quotes around your string parameters.

(Use java.net.URLEncoder on each string parameter to ensure it is done correctly.)

Also, do you have permissions on the NQ?

Also, is the project a leaf project? And enabled?

Are you sure your DB is returning a BLOB column (you should not see string content when testing) ?

Thanks for the quick reply.
Yep. #20 was a brain fart. %20 does same. It doesn't seem to care about the space.
Nope. No permissions on the NQ (zone and role are "Any").
I'll check out URLEncoder shortly.

Test project is tiny, stand-alone, and enabled.
Not sure about blob. We tried both varchar(MAX) and varbinary(MAX) as column type. Maybe I need a bit of education here.

varchar is definitely wrong. varbinary should work. Don't cast it.

(Show your SQL)

CREATE TABLE [dbo].[FILLER_HELP_FILES_TEST](
	[rec_id] [int] IDENTITY(1,1) NOT NULL,
	[file_id] [varchar](50) NOT NULL,
	[file_blob] [varchar](max) NOT NULL,
	[id] [int] NOT NULL
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

I'll switch back to varbinary in a little while.