Estamos generando valor de blob y queremos insertarlo en la base de datos a través de SQL Server. Podemos pasar el valor del blob y, con la ayuda de la llamada Ajax, intentamos que se inserte, pero recibimos el error Uncaught (in promise) TypeError: Failed to execute 'array buffer on 'Blob': Illegal invocation code . Y en WebServices, lo estamos pasando como valor de byte byte[] BLOB mientras que en SQL estamos usando var binary(max) para almacenar el valor.
async function pdfhandler() { let pdfBlob = '1'; var mystring = "Hello World!"; pdfBlob = new Blob([mystring]); updateblobdata(pdfBlob); console.log(pdfBlob); } function updateblobdata(blobvalue) { debugger; /// Insert Blob into Database /// console.log('updateblobdata called'); const urlParams = new URLSearchParams(window.location.search); const myParamtag = urlParams.get('104'); const mymodelval = urlParams.get('DuganHosp-0002'); var wonumval = '104'; var tagnumval = 'DuganHosp-0002'; var Modeval = 'U'; var BLOBval = blobvalue; $.ajax({ url: 'TestTool_WebService.asmx/UpdateHtmlBLOBContent', data: { WoNum: wonumval, Tagnum: tagnumval, BLOB: BLOBval, Mode: Modeval, }, method: 'post', dataType: 'json', contentType: false, processData: false, cache: false, success: function (data) { }, }); }Puede enviar archivos solo con content-type: multipart/form-data .
function updateblobdata(blobvalue) { const formData = new FormData(); formData.append('blob', blobvalue); $.ajax({ url: 'TestTool_WebService.asmx/UpdateHtmlBLOBContent', data: formData, method: 'post', dataType: 'json', contentType: 'multipart/form-data', processData: false, cache: false, success: function (data) { }, }); }No Todavía no funciona. No llega a este punto por valor de blob.
[WebMethod] public void UpdateHtmlBLOBContent(string WoNum, string Tagnum, byte[] BLOB, string Mode) { string htmldoc = null; using (SqlConnection con = new SqlConnection(ConfigurationSettings.AppSettings["ConStr1"])) { SqlCommand cmd = new SqlCommand("TestTool_PrototypeprocBlobRun", con); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.AddWithValue("@Workorder", WoNum); cmd.Parameters.AddWithValue("@Equipment", Tagnum); cmd.Parameters.AddWithValue("@HTML_blob", BLOB); cmd.Parameters.AddWithValue("@MODE", "U"); con.Open(); int i = cmd.ExecuteNonQuery(); SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { htmldoc = "Success"; } dr.Close(); } Context.Response.Write(htmldoc); } }