[英]NodeJS convert base64 to octet-stream
I'm trying to access one API which received octet-stream as parameter.我正在尝试访问一个接收八位字节流作为参数的API 。 For that I wanted to convert base64 string to octet-stream first.为此,我想首先将 base64 字符串转换为八位字节流。 In javascript I have achieved it using the default Blob type.在 javascript 中,我使用默认的 Blob 类型实现了它。 But in NodeJS I am not able to make it to perfect format which would be consumed by the API.但是在 NodeJS 中,我无法使其成为 API 使用的完美格式。
I have tried to convert it to Buffer and ArrayBuffers also, but no use.我也尝试将其转换为 Buffer 和 ArrayBuffers,但没有用。 I have also tried cross-blob library, but still it is not being converted to the exact format as I was getting in javaScript.我也尝试过跨 blob库,但它仍然没有像我在 javaScript 中那样被转换为确切的格式。
Try this :尝试这个 :
const fetch = require("node-fetch")
const fs = require('fs');
let subscriptionKey = '<your key here>';
let endpoint = '<endpoint url of your vision serice>';
let filePath = '<path of your file>';
//code below is what you are looking for
const base64 = fs.readFileSync(filePath, 'base64')
const data = Buffer.from(base64, 'base64')
if (!subscriptionKey) { throw new Error('Set your environment variables for your subscription key and endpoint.'); }
var uriBase = endpoint + "vision/v2.1/ocr"; //you define your API here , in this case I use ocr
fetch(uriBase + "?" + {
"language": "unk",
"detectOrientation": "true",
},
{
method: 'POST',
headers:
{
'Content-Type': 'application/octet-stream',
'Ocp-Apim-Subscription-Key': subscriptionKey,
},
body: data, //post binary data directly, it applys to all post methods which data type is octet-stream in vision serice API
}).then((response) => response.json()).then((data) =>
{
console.log(JSON.stringify(data, null, 2));
}).catch((error) =>
{
console.log(error);
});
Result :结果 :
Hope it helps.希望能帮助到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.