ajax发送base64,如何通过.ajax以base64编码发布图像?

本文档介绍了如何在Project Oxford OCR项目中使用Base64编码的本地文件进行POST请求。关键在于设置`processData:false`和`contentType:'application/octet-stream'`,并使用makeblob函数将Base64数据转换为Blob对象。解决方案包括一个用于创建Blob的函数以及使用$.ajax进行API调用的示例。
摘要由CSDN通过智能技术生成

小编典典

感谢所有帮助我前进的答案。

我也已在 https://social.msdn.microsoft.com/Forums/en-

US/807ee18d-45e5-410b-a339-c8dcb3bfa25b/testing-project-oxford-ocr-how-to-

例如,在base64中使用一个本地文件?forum =

mlapi(更多特定于牛津大学的项目),在他们的答案和您的答案之间,我有解决方案。

您需要发送一个Blob

您需要在.ajax调用中设置processData:false和contentType: 'application/octet-stream'选项

所以我的解决方案看起来像这样

首先是制作斑点的功能(从比我更有天赋的人逐字复制)

makeblob = function (dataURL) {

var BASE64_MARKER = ';base64,';

if (dataURL.indexOf(BASE64_MARKER) == -1) {

var parts = dataURL.split(',');

var contentType = parts[0].split(':')[1];

var raw = decodeURIComponent(parts[1]);

return new Blob([raw], { type: contentType });

}

var parts = dataURL.split(BASE64_MARKER);

var contentType = parts[0].split(':')[1];

var raw = window.atob(parts[1]);

var rawLength = raw.length;

var uInt8Array = new Uint8Array(rawLength);

for (var i = 0; i < rawLength; ++i) {

uInt8Array[i] = raw.charCodeAt(i);

}

return new Blob([uInt8Array], { type: contentType });

}

然后

$.ajax({

url: 'https://api.projectoxford.ai/vision/v1/ocr?' + $.param(params),

type: 'POST',

processData: false,

contentType: 'application/octet-stream',

data: makeblob('data:image/jpeg;base64,9j/4AAQSkZJRgA..........gAooooAKKKKACiiigD//Z'

})

.done(function(data) {alert("success");})

.fail(function() {alert("error");});

2020-07-26

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值