gpt4 book ai didi

node.js - 将文件转换为 Base64 通过 API 发送

转载 作者:太空宇宙 更新时间:2023-11-04 02:09:40 32 4
gpt4 key购买 nike

我使用了 webshot 模块从 html(或 url)中截取屏幕截图,屏幕截图文件将通过 REST API 发送到另一台服务器。

   var options = {
shotSize: {
width: 'all'
, height: 'all'
}
, userAgent: 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_2 like Mac OS X; en-us)'
+ ' AppleWebKit/531.21.20 (KHTML, like Gecko) Mobile/7B298g'
};

var renderStream = webshot('google.com');
var file = fs.createWriteStream('google.png', {encoding: 'binary'});

renderStream.on('data', function(data) {
file.write(data.toString('binary'), 'binary');
//code to encode base64Content and send api
});

我不知道如何从文件流进行编码以发送API。我想像这样发布我的 body api:

{
api: "/file/upload",
file: {
base64Content: "data:image/jpeg;base64,/9j/4AAgABAgAAAQAxxxxx",
lastModified: 1486989111609,
lastModifiedDate: "2017-02-13T12:31:51.609Z",
name: "14566344_1443324692346127_1005895525450508957_o.jpg",
size: 408675,
type: "image/jpeg"
}
}

请帮助我!

最佳答案

您可以使用stream-to-buffer模块来获取一个缓冲区中的屏幕截图内容,然后将其简单地转换为 Base64,如下所示:

'use strict';

const webshot = require('webshot');
const fs = require('fs');
const streamToBuffer = require('stream-to-buffer');

let options = {
shotSize: {
width: 'all'
, height: 'all'
}
, userAgent: 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_2 like Mac OS X; en-us)'
+ ' AppleWebKit/531.21.20 (KHTML, like Gecko) Mobile/7B298g'
};

let renderStream = webshot('google.com', options);

streamToBuffer(renderStream, (err, buffer) => {
if (err) {
console.error(err.stack);
throw err;
}

let base64String = buffer.toString('base64');
//Now you have base64 encoded screen shot. Use it however you want.
console.log(base64String);
});

仅供大家引用。如果您需要即时将流转换为 Base64,然后通过管道传输到另一个流(例如写入文件),您可以通过 base64-stream 来完成。像这样:

const base64 = require('base64-stream');

let renderStream = webshot('google.com', options);
let file = fs.createWriteStream('google.txt');

//So you can pipe it wherever needed, so it will bring base64 encoded data
renderStream.pipe(base64.encode()).pipe(file);

关于node.js - 将文件转换为 Base64 通过 API 发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42825601/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com