如何通过javascript中的ajax调用传递blob值?
Posted
技术标签:
【中文标题】如何通过javascript中的ajax调用传递blob值?【英文标题】:How to pass blob value through ajax call in javascript? 【发布时间】:2021-12-15 01:33:49 【问题描述】:我们正在生成 blob 值,并希望通过 SQL Server 将其插入数据库。
我们能够传递 blob 值,并且通过 Ajax 调用的帮助,我们试图将其插入,但我们收到错误 Uncaught (in promise) TypeError: Failed to execute 'array buffer on 'Blob': Illegal invocation code
。在 WebServices 中,我们将其作为字节值 byte[] BLOB 传递,而在 SQL 中,我们使用 var binary(max) 来存储值。
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) ,
);
【问题讨论】:
【参考方案1】:您只能使用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) ,
);
【讨论】:
【参考方案2】:不,它仍然不工作。它没有达到这一点以获得 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);
【讨论】:
以上是关于如何通过javascript中的ajax调用传递blob值?的主要内容,如果未能解决你的问题,请参考以下文章
通过 ajax 将 Javascript 变量传递给 PHP
Laravel + Datatables,如何将id传递给控制器 ?
请教大师们,JavaScript怎么调用.cs文件方法啥的?