I am using theese two functions to read/write from binary fields using base64 string
one can use them in Advanced Javascript Module like this:
function testUploadPicture(injson){
X.RUNSQL("INSERT INTO XTRDOCDATA (REFOBJID, SOSOURCE , LNUM, LINENUM, SODATA ) VALUES (" + injson.mtrl + ", 51, 0 , 1 , dbo.f_Base64ToBinary('" + injson.sodataB64 + "') )", null);
}
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [dbo].[f_Base64ToBinary](@Base64 VARCHAR(MAX))
RETURNS VARBINARY(MAX)
AS
BEGIN
DECLARE @Bin VARBINARY(MAX)
SET @Bin = CAST(N'' AS XML).value('xs:base64Binary(sql:variable("@Base64"))', 'VARBINARY(MAX)')
RETURN @Bin
END
GO
CREATE FUNCTION [dbo].[f_BinaryToBase64](@bin VARBINARY(MAX))
RETURNS VARCHAR(MAX)
AS
BEGIN
DECLARE @Base64 VARCHAR(MAX)
SET @Base64 = CAST(N'' AS XML).value('xs:base64Binary(xs:hexBinary(sql:variable("@bin")))','VARCHAR(MAX)')
RETURN @Base64
END
GO