【问题标题】:How to pass blob value through ajax call in javascript?如何通过javascript中的ajax调用传递blob值?
【发布时间】: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) { },
    });
}

【问题讨论】:

    标签: javascript c# sql-server web-services blobstorage


    【解决方案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);
          }
      }
      
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-01
        • 1970-01-01
        • 2021-05-20
        • 2018-01-30
        • 1970-01-01
        • 1970-01-01
        • 2014-04-19
        相关资源
        最近更新 更多