如何从字节数组创建文件并将其发送到 TelegramBot
How to create file from byte array and send it to TelegramBot
在 Service1 中,我创建了一个字节数组并将其发送到 Kafka。
在 Service2 中,我收到来自 Service1 的消息,使用此字节数组创建一个 PDF 文件并将其发送到 TelegramBot,TelegramBot 将其发送给用户。
服务 1
这就是我向 Kafka 发送字节数组的方式
byte[] file = _pdfBuilder
.AddObject(o =>
{
o.HtmlContent = html;
})
.Convert();
var result = await producer.ProduceAsync(_producerTopic, new Message<Null, string>()
{
Value = Encoding.Unicode.GetString(file)
}, cancelToken.Token);
服务 2
这就是我尝试创建 PDF 文件并将其发送到 Telegram Bot 的方式
using (var fs = new FileStream("FileName.pdf", FileMode.Create))
{
foreach (var bt in bytes)
{
fs.WriteByte(bt);
}
fs.Seek(0, SeekOrigin.Begin);
var document = new InputOnlineFile(fs, "file.pdf");
await _client.SendDocumentAsync(id, document);
}
或者这个
await using var memoryStream = new MemoryStream(bytes);
var doc = new InputOnlineFile(memoryStream, "file.pdf");
await _client.SendDocumentAsync(id, doc);
或者
var memoryStream = new MemoryStream(bytes);
var doc = new InputOnlineFile(memoryStream, "file.pdf");
await _client.SendDocumentAsync(id, doc);
所以问题是:在与 Telegram Bot 的聊天中,我收到一个空的 PDF 文件。
这也是我以前在控制器中创建文件的方式(文件不为空)
byte[] file = _pdfBuilder
.AddObject(o =>
{
o.HtmlContent = html;
})
.Convert();
return File(file, "application/pdf");
Unicode 编码和解码破坏了 pdf 文件。
如果您需要将文件作为字符串发送,请使用 Base64 convert
var byteArray = new byte[] {1,2,3,4,5,6,7,8,9};
var encString = System.Convert.ToBase64String(byteArray);
var decBytes = System.Convert.FromBase64String(encString);
//result: byte[9] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }
在 Service1 中,我创建了一个字节数组并将其发送到 Kafka。
在 Service2 中,我收到来自 Service1 的消息,使用此字节数组创建一个 PDF 文件并将其发送到 TelegramBot,TelegramBot 将其发送给用户。
服务 1
这就是我向 Kafka 发送字节数组的方式
byte[] file = _pdfBuilder
.AddObject(o =>
{
o.HtmlContent = html;
})
.Convert();
var result = await producer.ProduceAsync(_producerTopic, new Message<Null, string>()
{
Value = Encoding.Unicode.GetString(file)
}, cancelToken.Token);
服务 2
这就是我尝试创建 PDF 文件并将其发送到 Telegram Bot 的方式
using (var fs = new FileStream("FileName.pdf", FileMode.Create))
{
foreach (var bt in bytes)
{
fs.WriteByte(bt);
}
fs.Seek(0, SeekOrigin.Begin);
var document = new InputOnlineFile(fs, "file.pdf");
await _client.SendDocumentAsync(id, document);
}
或者这个
await using var memoryStream = new MemoryStream(bytes);
var doc = new InputOnlineFile(memoryStream, "file.pdf");
await _client.SendDocumentAsync(id, doc);
或者
var memoryStream = new MemoryStream(bytes);
var doc = new InputOnlineFile(memoryStream, "file.pdf");
await _client.SendDocumentAsync(id, doc);
所以问题是:在与 Telegram Bot 的聊天中,我收到一个空的 PDF 文件。
这也是我以前在控制器中创建文件的方式(文件不为空)
byte[] file = _pdfBuilder
.AddObject(o =>
{
o.HtmlContent = html;
})
.Convert();
return File(file, "application/pdf");
Unicode 编码和解码破坏了 pdf 文件。
如果您需要将文件作为字符串发送,请使用 Base64 convert
var byteArray = new byte[] {1,2,3,4,5,6,7,8,9};
var encString = System.Convert.ToBase64String(byteArray);
var decBytes = System.Convert.FromBase64String(encString);
//result: byte[9] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }