【问题标题】:Form Recognizer Anzalyze: Data loading error - 415表单识别器 Anzalyze:数据加载错误 - 415
【发布时间】:2020-10-19 06:21:21
【问题描述】:

我正在尝试使用 SAPUI5 (Jquery / AJAX) 发布方法调用表单识别器 API。我可以使用 RESTAPI 客户端阅读相同的 pdf。从 Javascript 调用 API 时出现以下错误。

问题似乎与 ajax post 方法主体中的数据有关。非常感谢任何建议/帮助。

错误信息:

415 不支持的媒体类型 {"error":{"code":"2018","innerError":{"requestId":"a12dc9f8-b22f-4602-85d8-7330b16593f7"},"message":"内容 解析错误。"}}

Javascript 代码:

onChange: function(oEvent) {
    //  var that = this;
    var reader = new FileReader();
    var file = oEvent.getParameter("files")[0];
    var raw;

    reader.onload = function (e) {
        raw = e.target.result;
        //alert(raw);
        var sUrl2 = "https://formrecognizerforsap.cognitiveservices.azure.com/formrecognizer/v1.0-preview/custom/models/{mymodelid>/analyze";

        jQuery.ajax({
            type: "POST",
            url: sUrl2,
            context: this,
            crossDomain: true,
            data: raw,
            beforeSend: function (xhr) {
                xhr.setRequestHeader("content-type", "application/pdf");

                xhr.setRequestHeader("ocp-apim-subscription-key", "my-subscription id");
            },
            error: function (jqXHR, textStatus, errorThrown) {
                sap.m.MessageToast.show(errorThrown);
            },
            success: function (oData, status, jqXHR) {
                sap.m.MessageToast.show(status);
            }

        });


    };

    reader.onerror = function (e) {
        sap.m.MessageToast.show("error");
    };
    reader.readAsDataURL(file);
},

【问题讨论】:

  • 我可以知道原始(数据)格式是怎样的吗?
  • 原始输出类似于 "data:application/pdf;base64,JVBERi0xLjMNCiXi48/TDQolUlN...." 。我尝试使用“数据:应用程序/pdf;base64,JVBERi 整个字符串以及删除数据:应用程序/pdf;base64 来发布。在这两种情况下,错误都是相同的。此外,我可以使用原始数据生成 PDF “Base64 转 PDF”网络链接。

标签: sapui5 microsoft-cognitive form-recognizer


【解决方案1】:

您可以使用atob javascript 函数来解码 Base64 字符串 (link)

例子:

    //plain text base64 WITHOUT datacontent and other stuff
    let base64string = "JVBERi0xLjQKJ..."
    
    let byteCharacters = atob(base64string);
    
    jQuery.ajax({
            type    : "POST",
            url     : "<form recognizer url endpoint>",
            context : this, 
            crossDomain: true,
            data: byteCharacters,
            beforeSend: function(xhr) {
    
                xhr.setRequestHeader("ocp-apim-subscription-key", "<your_key>");
    
                //To avoid specify pdf or image type use octet-stream
                xhr.setRequestHeader("content-type", "application/octet-stream");            
    
            },
            error   : function(jqXHR, textStatus, errorThrown) {
                console.error(errorThrown);
                },
            success : function(oData, status, jqXHR) {
                console.info(status);
            }
    });

要从 pdf 中获取纯 base64 字符串,您可以使用此网站进行测试:https://base64.guru/converter/encode/pdf

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-26
    • 2021-07-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多