javascript - 使用 Cloudflare Workers 将图像发送到 Telegram
问题描述
我尝试使用 Cloudflare Workers 向 Telegram 发送图像,但我的 Telegram 帐户中没有收到图像。我的代码也可以在 Chrome 开发者控制台中正常工作,所以 Cloudflare Workers 有问题。你可以帮帮我吗?
function b64toBlob(dataURI) {
var byteString = atob(dataURI.split(',')[1]);
var ab = new ArrayBuffer(byteString.length);
var ia = new Uint8Array(ab);
for (var i = 0; i < byteString.length; i++) {
ia[i] = byteString.charCodeAt(i);
}
return new Blob([ab], { type: 'image/jpeg' });
}
const telegram_token = "<my_bot_api_token>";
const telegram_url_img = "https://api.telegram.org/bot" + telegram_token + "/sendPhoto";
const base64 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEsAAAAhCAIAAAAeQ8GBAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAAFiUAABYlAUlSJPAAAAGESURBVFhH7ZY90kUwFIZvaQm3tATLUCqVSqUdKC1BaQlKS7IEpe+dL+9kjJ84JOZi8lQ3nHOSJ8cNn/HteMPn4w2fjzd8Pt7wF3RdF4bhZw/E1HXNnG3uaPj9fikhAJ5N0zBzDVtDyX7vLmIKIpkmJggCJq9hayjcb/MiFMvN4o01hmHIsoxxxkhbQ86wR57nTNhmtlmSFIZeZyh5orDZjN5m1r00TSVZgAluDWG1+8fTSPoApt2DHq8KYI5DQ5zOLLlAKLMKSxzpnoJpDg0N3WPEKVjieBGmOTQsyxLlkiTRO60mAGp4Dpa4gyHo+56//uEMbzKcgRedmqOqKl46jqoAOBbDtEsNi6JQc0je6VuoCoBjMXp/OV7D1hB/SD0NziHJp/ASlQ44FoMHB1nmY9zWEOg2KnAa8YYYZh43lOCgKNo4/UScgq7Cf3Y4LWH0bQ0V8IzjmCs9C2s5xWVRQzOFsJBTLimqads2iiIufw+b7z4D1xreAW/4fLzh83m74Tj+AcvdXhfpeUapAAAAAElFTkSuQmCC"
const blob = b64toBlob(base64);
var fd = new FormData();
fd.append('photo', blob)
fd.append('chat_id', <my_chat_id>)
const telegram_init = {
method: "POST",
body: fd
}
解决方案
不幸的是,Blob
Cloudflare Workers 目前不支持。FormData
受支持,您可以使用ArrayBuffer
s 填充它,但没有Blob
您将无法指定Content-Type
on individual FormData
,这可能是此 API 的要求。
推荐阅读
- r - 如何在不同长度的时间序列中创建随机间隙?
- vb.net - 字段名未知详情errorkind水晶报告
- sql - NLSSORT Oracle 到雪花
- reactjs - 尝试使用材质 UI 为具有特定自定义类的项目设置样式
- logging - Jmeter:打印beanshell结果的地方
- wcf - 在 nettcp 绑定中请求特定客户端证书
- python - Python PIL:调整大小时透明gif的帧即使在(处置= 2)时也会相互重叠
- asp.net - IIS URL HTTP 到 HTTPS 重定向在 ASP.Net 应用程序上不起作用
- flutter - 颤振中的 Agora.io RTC
- java - 将变量从活动传递到类