Question
· Mar 30, 2017

How to Output Binary Data with REST

Hello!

My goal is to serve files using REST classes only (no filesystem should be used), and I am a halfway far from it.

What I am succeeded in, is serving character files (html/css/javascript/etc) using the next approach:

1. Encode the file to Base64 and put it into XData block, like this:

/// css/index.css
XData File0 [ MimeType = text/css ]
{
QGNoYXJzZXQgIlVURi04Ijsjd2luZG93cyxib2R5LGh0bWx7cG9zaXRpb246cmVsYXRpdmU7b3ZlcmZsb3c6aGlkZGVufWJ1dHRvbixpbnB1dFt0eXBlPWJ1dHRvbl0sdGFibGUgdGh7YmFja2dyb3VuZC1jb2xvcjojMDJhZDhiO2NvbG9yOiNmZmZ9I3dpbmRvd3MsLmNlbnRyYWwsYm9keSxodG1se3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCV9I2dyYXBoIC5ub2RlcyAubm9kZSwjdGFidWxhciB0aCwjdGFidWxhciB0cixidXR0b24saW5wdXRbdHlwZT1idXR0b25dLGlucHV0W3R5cGU9Y2hlY2tib3hdLGxhYmVsLHNlbGVjdHtjdXJzb3I6cG9pbnRlcn1ib2R5LGh0bWx7bWFyZ2luOjA7cGFkZGluZzowO2ZvbnQtZmFtaWx5Om1vbm9zcGFjZX1pbnB1dFt0eXBlPW51bWJlcl0saW5wdXRbdHlwZT10ZXh0XSxzZWxlY3R7YmFja2dyb3VuZDowIDA7Y29sb3I6aW5oZXJpdDtmb250OmluaGVyaXQ7dGV4dC1zaGFkb3c6aW5oZXJpdH0jd2luZG93c3t0b3A6MDstd2Via2l0LXRyYW5zaXRpb246YWxsIC4zcyBlYXNlOy1tb3otdHJhbnNpdGlvbjphbGwgLjNzIGVhc2U7LW1zLXRyYW5zaXRpb246YWxsIC4zcyBlYXNlOy1vLXRyYW5zaXRpb246YWxsIC4zcyBlYXNlO3RyYW5zaXRpb246YWxsIC4zcyBlYXNlfSN3aW5kb3dzLm9mZlNjcmVlbnt0b3A6MTAwJTtvdmVyZmxvdzp2aXNpYmxlfXRhYmxle2JvcmRlci1zcGFjaW5nOjA7Ym9yZGVyLXJhZGl1czozcHg7b3ZlcmZsb3c6aGlkZGVuO2JveC1zaGFkb3c6MCAwIDJweCBncmF5fXRhYmxlIHRkLHRhYmxlIHRoe3BhZGRpbmc6MXB4IDJweH10YWJsZSB0ZDpub3QoOmxhc3QtY2hpbGQpLHRhYmxlIHRoOm5vdCg6bGFzdC1jaGlsZCl7Ym9yZGVyLXJpZ2h0OjFweCBzb2xpZCAjZGRkfXRhYmxlIHRyOm50aC1jaGlsZCgybil7YmFja2dyb3VuZC1jb2xvcjojZWVlfXRhYmxlIHRoe3RleHQtc2hhZG93OjAgMXB4IDFweCAjMDAwfWlucHV0W3R5cGU9bnVtYmVyXSxpbnB1dFt0eXBlPXRleHRde2JvcmRlcjowO2JvcmRlci1ib3R0b206MXB4IHNvbGlkIGdyYXl9c2VsZWN0e2JvcmRlcjowfVtjbGFzcyo9IiBpY29uLSJdOmJlZm9yZSxbY2xhc3NePWljb24tXTpiZWZvcmUsW2RhdGEtaWNvbl06YmVmb3Jle2ZvbnQtZmFtaWx5Omlrbm93ZW50aXR5YnJvd3Nlcmljb25zIWltcG9ydGFudDtmb250LXN0eWxlOm5vcm1hbCFpbXBvcnRhbnQ7Zm9udC13ZWlnaHQ6NDAwIWltcG9ydGFudDtmb250LXZhcmlhbnQ6bm9ybWFsIWltcG9ydGFudDt0ZXh0LXRyYW5zZm9ybTpub25lIWltcG9ydGFudDtzcGVhazpub25lO2xpbmUtaGVpZ2h0OjE7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZDstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGV9c2VsZWN0IG9wdGlvbntjb2xvcjojMDAwfWJ1dHRvbixpbnB1dFt0eXBlPWJ1dHRvbl17dGV4dC1zaGFkb3c6MCAxcHggMXB4ICMwMDA7Ym9yZGVyOjA7Ym9yZGVyLXJhZGl1czoxMnB4O3BhZGRpbmc6NXB4O21hcmdpbjoycHg7dHJhbnNpdGlvbjphbGwgLjNzIGVhc2U7Ym94LXNoYWRvdzowIDFweCAxcHggZ3JheX1idXR0b246aG92ZXIsaW5wdXRbdHlwZT1idXR0b25dOmhvdmVye2NvbG9yOiNmZmY1YTE7Ym94LXNoYWRvdzowIDJweCA1cHggZ3JheX0uY2VudHJhbHtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7ZGlzcGxheTp0YWJsZX0uY2VudHJhbD5kaXZ7ZGlzcGxheTp0YWJsZS1jZWxsO3ZlcnRpY2FsLWFsaWduOm1pZGRsZTt0ZXh0LWFsaWduOmNlbnRlcn0jdGFidWxhciB0cjpob3ZlciB0ZDpsYXN0LWNoaWxkIGksLmNlbnRyYWw+ZGl2PmRpdntkaXNwbGF5OmlubGluZS1ibG9ja31oMSxoMixoMyxoNCxoNSxoNnttYXJnaW46MCAwIC4zZW19LmxvYWRpbmd7YmFja2dyb3VuZDpyZ2JhKDI1NSwyNTUsMjU1LC44KTt6LWluZGV4OjIwMX0ubG9hZGluZyAubG9hZGVye3Bvc2l0aW9uOmZpeGVkO3RvcDpjYWxjKDUwJSAtIDMycHgpO2xlZnQ6Y2FsYyg1MCUgLSAzMnB4KTt3aWR0aDo2NHB4O2hlaWdodDo2NHB4O2JvcmRlci1yYWRpdXM6NTAlO3BlcnNwZWN0aXZlOjgwMHB4fSNncmFwaCwjdGFibGU+LndyYXBwZXIgdGFibGV7d2lkdGg6MTAwJX0ubG9hZGluZyAubG9hZGVyPi5pbm5lcntwb3NpdGlvbjphYnNvbHV0ZTtib3gtc2l6aW5nOmJvcmRlci1ib3g7d2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtib3JkZXItcmFkaXVzOjUwJTtib3gtc2hhZG93OjAgMCAzcHggIzAyYWQ4Yn0ubG9hZGluZyAubG9hZGVyPi5pbm5lci5vbmV7bGVmdDowO3RvcDowO2FuaW1hdGlvbjpyb3RhdGUtb25lIDFzIGxpbmVhciBpbmZpbml0ZTtib3JkZXItYm90dG9tOjNweCBzb2xpZCAjZTA4ZjAwO2JveC1zaGFkb3c6MCAwIDNweCAjZTA4ZjAwfS5sb2FkaW5nIC5sb2FkZXI+LmlubmVyLnR3b3tyaWdodDowO3RvcDowO2FuaW1hdGlvbjpyb3RhdGUtdHdvIDFzIGxpbmVhciBpbmZpbml0ZTtib3JkZXItcmlnaHQ6M3B4IHNvbGlkICM0Yzc5YzE7Ym94LXNoYWRvdzowIDAgM3B4ICM0Yzc5YzF9LmxvYWRpbmcgLmxvYWRlcj4uaW5uZXIudGhyZWV7cmlnaHQ6MDtib3R0b206MDthbmltYXRpb246cm90YXRlLXRocmVlIDFzIGxpbmVhciBpbmZpbml0ZTtib3JkZXItdG9wOjNweCBzb2xpZCAjMDJhZDhifSN0YWJ1bGFyLWhpZGRlbiB0cjpmaXJzdC1jaGlsZCB0ZCwjdGFidWxhci1vdGhlcnMgdHI6Zmlyc3QtY2hpbGQgdGR7Ym9yZGVyLXRvcDoxcHggc29saWQgIzAwMH1ALXdlYmtpdC1rZXlmcmFtZXMgcm90YXRlLW9uZXswJXt0cmFuc2Zvcm06cm90YXRlWCgzNWRlZykgcm90YXRlWSgtNDVkZWcpIHJvdGF0ZVooMCl9MTAwJXt0cmFuc2Zvcm06cm90YXRlWCgzNWRlZykgcm90YXRlWSgtNDVkZWcpIHJvdGF0ZVooMzYwZGVnKX19QC1tb3ota2V5ZnJhbWVzIHJvdGF0ZS1vbmV7MCV7dHJhbnNmb3JtOnJvdGF0ZVgoMzVkZWcpIHJvdGF0ZVkoLTQ1ZGVnKSByb3RhdGVaKDApfTEwMCV7dHJhbnNmb3JtOnJvdGF0ZVgoMzVkZWcpIHJvdGF0ZVkoLTQ1ZGVnKSByb3RhdGVaKDM2MGRlZyl9fUAtby1rZXlmcmFtZXMgcm90YXRlLW9uZXswJXt0cmFuc2Zvcm06cm90YXRlWCgzNWRlZykgcm90YXRlWSgtNDVkZWcpIHJvdGF0ZVooMCl9MTAwJXt0cmFuc2Zvcm06cm90YXRlWCgzNWRlZykgcm90YXRlWSgtNDVkZWcpIHJvdGF0ZVooMzYwZGVnKX19QGtleWZyYW1lcyByb3RhdGUtb25lezAle3RyYW5zZm9ybTpyb3RhdGVYKDM1ZGVnKSByb3RhdGVZKC00NWRlZykgcm90YXRlWigwKX0xMDAle3RyYW5zZm9ybTpyb3RhdGVYKDM1ZGVnKSByb3RhdGVZKC00NWRlZykgcm90YXRlWigzNjBkZWcpfX1ALXdlYmtpdC1rZXlmcmFtZXMgcm90YXRlLXR3b3swJXt0cmFuc2Zvcm06cm90YXRlWCg1MGRlZykgcm90YXRlWSgxMGRlZykgcm90YXRlWigwKX0xMDAle3RyYW5zZm9ybTpyb3RhdGVYKDUwZGVnKSByb3RhdGVZKDEwZGVnKSByb3RhdGVaKDM2MGRlZyl9fUAtbW96LWtleWZyYW1lcyByb3RhdGUtdHdvezAle3RyYW5zZm9ybTpyb3RhdGVYKDUwZGVnKSByb3RhdGVZKDEwZGVnKSByb3RhdGVaKDApfTEwMCV7dHJhbnNmb3JtOnJvdGF0ZVgoNTBkZWcpIHJvdGF0ZVkoMTBkZWcpIHJvdGF0ZVooMzYwZGVnKX19QC1vLWtleWZyYW1lcyByb3RhdGUtdHdvezAle3RyYW5zZm9ybTpyb3RhdGVYKDUwZGVnKSByb3RhdGVZKDEwZGVnKSByb3RhdGVaKDApfTEwMCV7dHJhbnNmb3JtOnJvdGF0ZVgoNTBkZWcpIHJvdGF0ZVkoMTBkZWcpIHJvdGF0ZVooMzYwZGVnKX19QGtleWZyYW1lcyByb3RhdGUtdHdvezAle3RyYW5zZm9ybTpyb3RhdGVYKDUwZGVnKSByb3RhdGVZKDEwZGVnKSByb3RhdGVaKDApfTEwMCV7dHJhbnNmb3JtOnJvdGF0ZVgoNTBkZWcpIHJvdGF0ZVkoMTBkZWcpIHJvdGF0ZVooMzYwZGVnKX19QC13ZWJraXQta2V5ZnJhbWVzIHJvdGF0ZS10aHJlZXswJXt0cmFuc2Zvcm06cm90YXRlWCgzNWRlZykgcm90YXRlWSg1NWRlZykgcm90YXRlWigwKX0xMDAle3RyYW5zZm9ybTpyb3RhdGVYKDM1ZGVnKSByb3RhdGVZKDU1ZGVnKSByb3RhdGVaKDM2MGRlZyl9fUAtbW96LWtleWZyYW1lcyByb3RhdGUtdGhyZWV7MCV7dHJhbnNmb3JtOnJvdGF0ZVgoMzVkZWcpIHJvdGF0ZVkoNTVkZWcpIHJvdGF0ZVooMCl9MTAwJXt0cmFuc2Zvcm06cm90YXRlWCgzNWRlZykgcm90YXRlWSg1NWRlZykgcm90YXRlWigzNjBkZWcpfX1ALW8ta2V5ZnJhbWVzIHJvdGF0ZS10aHJlZXswJXt0cmFuc2Zvcm06cm90YXRlWCgzNWRlZykgcm90YXRlWSg1NWRlZykgcm90YXRlWigwKX0xMDAle3RyYW5zZm9ybTpyb3RhdGVYKDM1ZGVnKSByb3RhdGVZKDU1ZGVnKSByb3RhdGVaKDM2MGRlZyl9fUBrZXlmcmFtZXMgcm90YXRlLXRocmVlezAle3RyYW5zZm9ybTpyb3RhdGVYKDM1ZGVnKSByb3RhdGVZKDU1ZGVnKSByb3RhdGVaKDApfTEwMCV7dHJhbnNmb3JtOnJvdGF0ZVgoMzVkZWcpIHJvdGF0ZVkoNTVkZWcpIHJvdGF0ZVooMzYwZGVnKX19W2NsYXNzKj1pY29uLV17LXdlYmtpdC11c2VyLXNlbGVjdDpub25lOy1tb3otdXNlci1zZWxlY3Q6bm9uZTstbXMtdXNlci1zZWxlY3Q6bm9uZTt1c2VyLXNlbGVjdDpub25lOy13ZWJraXQtdHJhbnNpdGlvbjphbGwgLjNzIGVhc2U7LW1vei10cmFuc2l0aW9uOmFsbCAuM3MgZWFzZTstbXMtdHJhbnNpdGlvbjphbGwgLjNzIGVhc2U7LW8tdHJhbnNpdGlvbjphbGwgLjNzIGVhc2U7dHJhbnNpdGlvbjphbGwgLjNzIGVhc2U7cG9zaXRpb246cmVsYXRpdmU7ZGlzcGxheTppbmxpbmUtYmxvY2s7Y3Vyc29yOnBvaW50ZXJ9W2NsYXNzKj1pY29uLV0udWl7Zm9udC1zaXplOjI4cHh9W2NsYXNzKj1pY29uLV06aG92ZXJ7Y29sb3I6IzAyYWQ4Yn1bY2xhc3MqPWljb24tXS50b2dnbGVke2NvbG9yOiNmZjU1NGJ9W2NsYXNzKj1pY29uLV0udG9nZ2xlZDpob3Zlcntjb2xvcjojMDJhZDhifVtjbGFzcyo9aWNvbi1dLmRpc2FibGVkLFtjbGFzcyo9aWNvbi1dLmRpc2FibGVkOmhvdmVye2NvbG9yOmdyYXl9LnVpSWNvbkdyb3Vwe3Bvc2l0aW9uOmZpeGVkfS51aUljb25Hcm91cC50b3BSaWdodHt0b3A6NXB4O3JpZ2h0OjVweH0jZ3JhcGgsI3RhYmxle3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2hlaWdodDoxMDAlfUBmb250LWZhY2V7Zm9udC1mYW1pbHk6aWtub3dlbnRpdHlicm93c2VyaWNvbnM7c3JjOnVybCguLi9mb250cy9pa25vd2VudGl0eWJyb3dzZXJpY29ucy5lb3QpO3NyYzp1cmwoLi4vZm9udHMvaWtub3dlbnRpdHlicm93c2VyaWNvbnMuZW90PyNpZWZpeCkgZm9ybWF0KCJlbWJlZGRlZC1vcGVudHlwZSIpLHVybCguLi9mb250cy9pa25vd2VudGl0eWJyb3dzZXJpY29ucy53b2ZmKSBmb3JtYXQoIndvZmYiKSx1cmwoLi4vZm9udHMvaWtub3dlbnRpdHlicm93c2VyaWNvbnMudHRmKSBmb3JtYXQoInRydWV0eXBlIiksdXJsKC4uL2ZvbnRzL2lrbm93ZW50aXR5YnJvd3Nlcmljb25zLnN2ZyNpa25vd2VudGl0eWJyb3dzZXJpY29ucykgZm9ybWF0KCJzdmciKTtmb250LXdlaWdodDo0MDA7Zm9udC1zdHlsZTpub3JtYWx9W2RhdGEtaWNvbl06YmVmb3Jle2NvbnRlbnQ6YXR0cihkYXRhLWljb24pfS5pY29uLWxpc3Q6YmVmb3Jle2NvbnRlbnQ6Ilw2MSJ9Lmljb24tem9vbS1pbjpiZWZvcmV7Y29udGVudDoiXDYzIn0uaWNvbi16b29tLW91dDpiZWZvcmV7Y29udGVudDoiXDY0In0uaWNvbi1zZWFyY2g6YmVmb3Jle2NvbnRlbnQ6Ilw2NSJ9Lmljb24tb3V0bGluZTpiZWZvcmV7Y29udGVudDoiXDY2In0uaWNvbi1maWxsZWQ6YmVmb3Jle2NvbnRlbnQ6Ilw2NyJ9Lmljb24tdGgtbGlzdDpiZWZvcmV7Y29udGVudDoiXDY4In0uaWNvbi1jaGVjay1jaXJjbGU6YmVmb3Jle2NvbnRlbnQ6Ilw2OSJ9Lmljb24tY2lyY2xlOmJlZm9yZXtjb250ZW50OiJcNmEifS5pY29uLWNvbmZpZzpiZWZvcmV7Y29udGVudDoiXDZiIn0uaWNvbi1zZXR0aW5nczpiZWZvcmV7Y29udGVudDoiXDZjIn0uaWNvbi1maWx0ZXI6YmVmb3Jle2NvbnRlbnQ6Ilw2ZCJ9Lmljb24td3JlbmNoOmJlZm9yZXtjb250ZW50OiJcNmYifS5pY29uLW9wdGlvbnM6YmVmb3Jle2NvbnRlbnQ6Ilw2ZSJ9Lmljb24tY2xvc2U6YmVmb3Jle2NvbnRlbnQ6Ilw3MCJ9Lmljb24tdW5saW5rOmJlZm9yZXtjb250ZW50OiJcNzIifS5pY29uLXJlbW92ZTpiZWZvcmV7Y29udGVudDoiXDcxIn0uaWNvbi1zaGFyZTpiZWZvcmV7Y29udGVudDoiXDczIn0uaWNvbi1yZWRvOmJlZm9yZXtjb250ZW50OiJcNzQifS5pY29uLXVuZG86YmVmb3Jle2NvbnRlbnQ6Ilw3NSJ9Lmljb24tYWRkOmJlZm9yZXtjb250ZW50OiJcNjIifS5pY29uLWFycm93LWxlZnQ6YmVmb3Jle2NvbnRlbnQ6Ilw3NiJ9Lmljb24tYXJyb3ctcmlnaHQ6YmVmb3Jle2NvbnRlbnQ6Ilw3NyJ9Lmljb24tZG93bmxvYWQ6YmVmb3Jle2NvbnRlbnQ6Ilw3OCJ9Lmljb24tY2xvc2UtdGFibGU6YmVmb3Jle2NvbnRlbnQ6Ilw3OSJ9Lmljb24tcXVlc3Rpb246YmVmb3Jle2NvbnRlbnQ6Ilw3YSJ9I2dyYXBoe2xlZnQ6MH0jZ3JhcGggLmxpbmtzIGxpbmUuc2ltaWxhcntzdHJva2U6IzdjYTFmZn0jZ3JhcGggLmxpbmtzIGxpbmUucmVsYXRlZHtzdHJva2U6I2ZmYjg0MH0jZ3JhcGggLmxpbmtzIGxpbmUub3RoZXJ7c3Ryb2tlOiNiYmJ9I2dyYXBoIC5ub2RlcyAubm9kZSBjaXJjbGV7c3Ryb2tlOiNmZmY7c3Ryb2tlLXdpZHRoOjFweDtmaWxsOiNmZjU1NGJ9I2dyYXBoIC5ub2RlcyAubm9kZS5lbnRpdHkgY2lyY2xle2ZpbGw6IzdjYTFmZn0jZ3JhcGggLm5vZGVzIC5ub2RlLmZvbGRlciBjaXJjbGV7ZmlsbDojYmJifSNncmFwaCAubm9kZXMgLm5vZGUuc2VsZWN0ZWQgY2lyY2xle3N0cm9rZTojMDAwfSNncmFwaCAubm9kZXMgLm5vZGUucm9vdCBjaXJjbGV7ZmlsbDojZmZiODQwfSNncmFwaCAubm9kZXMgLm5vZGUgdGV4dHt0ZXh0LWFuY2hvcjptaWRkbGU7cG9pbnRlci1ldmVudHM6bm9uZTtmaWxsOiMwMDA7dHJhbnNpdGlvbjp0cmFuc2Zvcm0gLjNzIGVhc2Usb3BhY2l0eSAuM3MgZWFzZX0jcmlnaHRUb3BJY29ucywjdGFibGV7LXdlYmtpdC10cmFuc2l0aW9uOmFsbCAuM3MgZWFzZTstbW96LXRyYW5zaXRpb246YWxsIC4zcyBlYXNlOy1tcy10cmFuc2l0aW9uOmFsbCAuM3MgZWFzZTstby10cmFuc2l0aW9uOmFsbCAuM3MgZWFzZX0jZ3JhcGggLm5vZGVzIC5ub2RlOmhvdmVyIHRleHR7dHJhbnNmb3JtOnNjYWxlKDIpfSNncmFwaCAubm9kZXMgLm5vZGUgLnRvb2x0aXB7dmlzaWJpbGl0eTpoaWRkZW47b3BhY2l0eTowO2ZpbGw6Z3JheX0jZ3JhcGggLm5vZGVzIC5ub2RlOmhvdmVyIC50b29sdGlwe3Zpc2liaWxpdHk6dmlzaWJsZTtvcGFjaXR5OjF9I2dyYXBoIC5ub2RlcyAubm9kZS5oaWdobGlnaHRlZCBjaXJjbGV7ZmlsbDojZmZmNWExfSNncmFwaCAuYnJ1c2ggLmV4dGVudHtmaWxsLW9wYWNpdHk6LjE7c3Ryb2tlOiNmZmY7c2hhcGUtcmVuZGVyaW5nOmNyaXNwRWRnZXN9I3RhYmxle3JpZ2h0OjA7bWF4LXdpZHRoOjEwMCU7Ym94LXNpemluZzpib3JkZXItYm94O2JhY2tncm91bmQ6I2ZmZjtvdmVyZmxvdzp2aXNpYmxlO2JveC1zaGFkb3c6MCAwIDJweCBncmF5O3otaW5kZXg6OTk7dHJhbnNpdGlvbjphbGwgLjNzIGVhc2U7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDEwMCUsMCk7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlKDEwMCUsMCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGUoMTAwJSwwKTstby10cmFuc2Zvcm06dHJhbnNsYXRlKDEwMCUsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgxMDAlLDApfSN0YWJsZS5hY3RpdmV7LXdlYmtpdC10cmFuc2Zvcm06dHJhbnNsYXRlKDAsMCk7LW1vei10cmFuc2Zvcm06dHJhbnNsYXRlKDAsMCk7LW1zLXRyYW5zZm9ybTp0cmFuc2xhdGUoMCwwKTstby10cmFuc2Zvcm06dHJhbnNsYXRlKDAsMCk7dHJhbnNmb3JtOnRyYW5zbGF0ZSgwLDApfSN0YWJsZT4uY29udHJvbHN7cG9zaXRpb246cmVsYXRpdmU7cGFkZGluZy1sZWZ0OjQycHg7dG9wOjVweH0jc2V0dGluZ3MsI3RhYmxlPi53cmFwcGVye3BhZGRpbmc6MTBweDtvdmVyZmxvdzphdXRvO2JveC1zaXppbmc6Ym9yZGVyLWJveH0jdGFibGU+LndyYXBwZXJ7aGVpZ2h0OjEwMCU7aGVpZ2h0OmNhbGMoMTAwJSAtIDM2cHgpfSN0YWJsZSAucmVsYXRlZHtjb2xvcjojZmZiODQwfSN0YWJsZSAuc2ltaWxhcntjb2xvcjojN2NhMWZmfSN0YWJsZSAucm9vdHtjb2xvcjojZmY1NTRifSN0YWJ1bGFyIHRoey13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0jdGFidWxhciB0aC5zb3J0LXVwOmFmdGVye2NvbnRlbnQ6IiDilrwifSN0YWJ1bGFyIHRoLnNvcnQtZG93bjphZnRlcntjb250ZW50OiIg4payIn0jdGFidWxhciB0aDpsYXN0LWNoaWxke2JvcmRlci1sZWZ0Om5vbmV9I3RhYnVsYXIgdGQ6bnRoLWxhc3QtY2hpbGQoMiksI3RhYnVsYXIgdGg6bnRoLWxhc3QtY2hpbGQoMil7Ym9yZGVyLXJpZ2h0Om5vbmV9I3RhYnVsYXIgdGR7bWF4LXdpZHRoOjE1MHB4O3doaXRlLXNwYWNlOnByZTtvdmVyZmxvdzpoaWRkZW47dGV4dC1vdmVyZmxvdzplbGxpcHNpc30jdGFidWxhciB0ZDpsYXN0LWNoaWxke3dpZHRoOjMwcHg7Ym9yZGVyLWxlZnQ6bm9uZX0jdGFidWxhciB0ciB0ZDpsYXN0LWNoaWxke292ZXJmbG93OnZpc2libGU7dGV4dC1vdmVyZmxvdzpjbGlwfSN0YWJ1bGFyIHRyIHRkOmxhc3QtY2hpbGQgaXtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6MnB4O2ZvbnQtc2l6ZToxM3B4O2hlaWdodDoxM3B4O2Rpc3BsYXk6bm9uZTstd2Via2l0LXRyYW5zaXRpb246bm9uZTstbW96LXRyYW5zaXRpb246bm9uZTstbXMtdHJhbnNpdGlvbjpub25lOy1vLXRyYW5zaXRpb246bm9uZTt0cmFuc2l0aW9uOm5vbmV9I3RhYnVsYXIgdHI6aG92ZXJ7YmFja2dyb3VuZC1jb2xvcjojZmZmNWExfSN0YWJ1bGFyLXNlbGVjdGVkIHRyIHRkOmxhc3QtY2hpbGQgLmljb24tY2xvc2V7Y29sb3I6cmVkfSN0YWJ1bGFyLWhpZGRlbiB0ciB0ZDpsYXN0LWNoaWxkIC5pY29uLWFkZCwjdGFidWxhci1vdGhlcnMgdHIgdGQ6bGFzdC1jaGlsZCAuaWNvbi1hZGR7Y29sb3I6Z3JlZW59I3RhYnVsYXItb3RoZXJze29wYWNpdHk6Ljd9I3RhYnVsYXItaGlkZGVue29wYWNpdHk6LjR9LmhpbnQ+LnRvb2x0aXAucmlnaHQ+LmxhYmVsOmFmdGVyLC5oaW50Pi50b29sdGlwPi5sYWJlbDphZnRlcntib3JkZXItdG9wOjlweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItYm90dG9tOjhweCBzb2xpZCB0cmFuc3BhcmVudH0jc2V0dGluZ3N7cG9zaXRpb246YWJzb2x1dGU7dG9wOi0xMDAlO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7YmFja2dyb3VuZDojZmZmfSNzZXR0aW5nczpub3QoLmFjdGl2ZSkgI3F1ZXJ5U2V0dGluZy5maXhlZHtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7Ym90dG9tOi0zMHB4O3dpZHRoOjEwMCU7dGV4dC1hbGlnbjpjZW50ZXI7ZGlzcGxheTpibG9jazt6LWluZGV4Ojk4fSNyaWdodFRvcEljb25zLCN0YWJsZVRvZ2dsZSwjdG9vbGJhckljb25ze3otaW5kZXg6MTAwO3Bvc2l0aW9uOmFic29sdXRlfSNzZXR0aW5ncyAuZm9vdGVye3RleHQtYWxpZ246cmlnaHQ7Zm9udC1zaXplOjhwdDtjb2xvcjpncmF5O3BhZGRpbmc6MCAycHh9I3NldHRpbmdzXC50YWJ1bGFyQ29sdW1uc3tkaXNwbGF5OmlubGluZS1ibG9ja30jc2V0dGluZ3NcLnRhYnVsYXJDb2x1bW5zIC5jb2x1bW57ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luOjNweDtwYWRkaW5nOjNweCAwO2JhY2tncm91bmQtY29sb3I6IzAyYWQ4Yjtib3JkZXItcmFkaXVzOjEycHg7Y29sb3I6I2ZmZjt0ZXh0LXNoYWRvdzowIDFweCAxcHggIzAwMH0jc2V0dGluZ3NcLnRhYnVsYXJDb2x1bW5zIC5jb2x1bW4gaXtwb3NpdGlvbjpyZWxhdGl2ZTt0b3A6MXB4O3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0jc2V0dGluZ3NcLnJlc2V0U2V0dGluZ3N7YmFja2dyb3VuZC1jb2xvcjojZmY1NTRifSNjbG9zZVNldHRpbmdzVG9nZ2xle3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjdweDt0b3A6N3B4fSN0YWJsZVRvZ2dsZXtsZWZ0Oi0zNXB4O3RvcDo2cHh9I3RhYmxlVG9nZ2xlLnRvZ2dsZWR7bGVmdDo5cHh9I3RhYmxlVG9nZ2xlLnRvZ2dsZWQ6YmVmb3Jle2NvbnRlbnQ6Ilw3OSJ9I3JpZ2h0VG9wSWNvbnN7bGVmdDotMzVweDt0b3A6NDBweDt0cmFuc2l0aW9uOmFsbCAuM3MgZWFzZX0jcmlnaHRUb3BJY29ucz4udWl7ZGlzcGxheTpibG9jaztjb2xvcjppbmhlcml0O3RleHQtZGVjb3JhdGlvbjpub25lfSN0YWJsZS5hY3RpdmUgI3JpZ2h0VG9wSWNvbnN7dG9wOjZweH0jdG9vbGJhckljb25ze3JpZ2h0OjEwMCU7Ym90dG9tOjA7dGV4dC1hbGlnbjpjZW50ZXI7b3ZlcmZsb3c6dmlzaWJsZTttaW4td2lkdGg6MzBweDstd2Via2l0LXRyYW5zaXRpb246YWxsIC4zcyBlYXNlOy1tb3otdHJhbnNpdGlvbjphbGwgLjNzIGVhc2U7LW1zLXRyYW5zaXRpb246YWxsIC4zcyBlYXNlOy1vLXRyYW5zaXRpb246YWxsIC4zcyBlYXNlO3RyYW5zaXRpb246YWxsIC4zcyBlYXNlfS5oaW50e3Bvc2l0aW9uOnJlbGF0aXZlfS5oaW50Pi50b29sdGlwe3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO292ZXJmbG93OmhpZGRlbn0uaGludD4udG9vbHRpcD4ubGFiZWx7cG9zaXRpb246YWJzb2x1dGU7cGFkZGluZzozcHg7d2lkdGg6YXV0bzt3aGl0ZS1zcGFjZTpub3dyYXA7Y29sb3I6I0ZGRjtiYWNrZ3JvdW5kOiMwMDA7Zm9udC1zaXplOjE2cHg7dGV4dC1hbGlnbjpjZW50ZXI7dmlzaWJpbGl0eTpoaWRkZW47Ym9yZGVyLXJhZGl1czo0cHg7b3BhY2l0eTowO3RvcDo1MCU7LXdlYmtpdC10cmFuc2l0aW9uOm9wYWNpdHkgLjNzIGVhc2U7LW1vei10cmFuc2l0aW9uOm9wYWNpdHkgLjNzIGVhc2U7LW1zLXRyYW5zaXRpb246b3BhY2l0eSAuM3MgZWFzZTstby10cmFuc2l0aW9uOm9wYWNpdHkgLjNzIGVhc2U7dHJhbnNpdGlvbjpvcGFjaXR5IC4zcyBlYXNlfS5oaW50Pi50b29sdGlwPi5sYWJlbC50d28tbGluZXt0b3A6MjUlfS5oaW50Pi50b29sdGlwPi5sYWJlbCAuc3Vie2ZvbnQtc2l6ZTo4cHR9LmhpbnQ+LnRvb2x0aXA+LmxhYmVsOmFmdGVye2NvbnRlbnQ6Jyc7cG9zaXRpb246YWJzb2x1dGU7dG9wOjUwJTtsZWZ0OjEwMCU7bWFyZ2luLXRvcDotOXB4O3dpZHRoOjA7aGVpZ2h0OjA7Ym9yZGVyLWxlZnQ6OXB4IHNvbGlkICMwMDB9LmhpbnQ+LnRvb2x0aXA6aG92ZXJ7b3ZlcmZsb3c6dmlzaWJsZX0uaGludD4udG9vbHRpcDpob3Zlcj4ubGFiZWx7dmlzaWJpbGl0eTp2aXNpYmxlO3JpZ2h0OjEwMCU7bWFyZ2luLXRvcDotMTVweDttYXJnaW4tcmlnaHQ6MTVweDt6LWluZGV4Ojk5OTtvcGFjaXR5Oi44fS5oaW50Pi50b29sdGlwLnJpZ2h0Pi5sYWJlbDphZnRlcntsZWZ0OmF1dG87cmlnaHQ6MTAwJTtib3JkZXItbGVmdDpub25lO2JvcmRlci1yaWdodDo5cHggc29saWQgIzAwMH0uaGludD4udG9vbHRpcC5yaWdodDpob3Zlcj4ubGFiZWx7cmlnaHQ6YXV0bztsZWZ0OjEwMCU7bWFyZ2luLXJpZ2h0OjA7bWFyZ2luLWxlZnQ6MTVweH0uaGludD4udG9vbHRpcC50b3A+LmxhYmVse3RvcDotMjBweDt3aWR0aDoxNjBweDtib3gtc2l6aW5nOmJvcmRlci1ib3g7bGVmdDpjYWxjKC04MHB4ICsgNTAlKX0uaGludD4udG9vbHRpcC50b3A+LmxhYmVsLnR3by1saW5le3RvcDotMzNweH0uaGludD4udG9vbHRpcC50b3A+LmxhYmVsOmFmdGVye3JpZ2h0OmF1dG87dG9wOmNhbGMoMTAwJSArIDZweCk7bGVmdDpjYWxjKDUwJSAtIDhweCk7Ym9yZGVyLWJvdHRvbTpub25lO2JvcmRlci10b3A6OHB4IHNvbGlkICMwMDA7Ym9yZGVyLXJpZ2h0OjhweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItbGVmdDo4cHggc29saWQgdHJhbnNwYXJlbnR9LmhpbnQ+LnRvb2x0aXAudG9wOmhvdmVyPi5sYWJlbHtyaWdodDphdXRvO21hcmdpbi1yaWdodDowO21hcmdpbi1sZWZ0OjB9
}

2. Make the endpoint which will serve this file, like this (simplified):

XData UrlMap
{
<Routes>
    <Route Url="/file" Method="GET" Call="StaticDelivery"/>
</Routes>
}

ClassMethod StaticDelivery() As %Status
{
    set xdata = ##class(%Dictionary.CompiledXData).%OpenId($ClassName()_"||File0")
    set %response.CharSet = "utf-8"
    set %response.ContentType = xdata.MimeType
    write $System.Encryption.Base64Decode($zcvt(xdata.Data.Read(xdata.Data.Size), "O", "UTF8"))
    return $$$OK
}

And this does work perfectly!

However, when it turns to serving binary files (fonts, images, etc) with the same approach, they are seemed to be corrupted (some differences are highlighted):

It seems what simply writeing the binary data is not the good idea.

Is there anything which actually can write the binary data to the client?

P.S.

Indeed I have discovered %CSP.StreamServer class which was able to do this job (example). But the approach I used in the example unfortunately works only with file streams. Any attempts to put BinaryStreams OIDs to Encrypt method resulted with the same behavior as just writeing this with REST, which gives corrupted files.

P.P.S.

The font file in Base64 which I wanted to serve:

/// fonts/iknowentitybrowsericons.woff
XData File7 [ MimeType = application/font-woff ]
{
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
}

Many thanks for any help!

Discussion (4)0
Log in or sign up to continue