我试图使用SAPUI5 (Jquery / AJAX) post方法调用表单识别器API。我能够阅读相同的pdf使用RESTAPI客户端。当从Javascript调用API时,会出现以下错误。
问题似乎与ajax post方法中的数据有关。任何建议/帮助都是非常感谢的。
错误信息:
"innerError":{"requestId":"a12dc9f8-b22f-4602-85d8-7330b16593f7"},415不支持的媒体类型{“错误”:{“代码”:“2018”,
“消息”:“内容解析错误”}}
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);
},发布于 2020-10-15 21:29:58
您可以使用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
https://stackoverflow.com/questions/61707199
复制相似问题