从 MemoryStream 上传图片而不是直接从硬盘上传

Upload image from MemoryStream rather than directly from hard drive

    using (MemoryStream stream = new MemoryStream())
        {                                                   
            bitMap.Save(stream, System.DrawingCore.Imaging.ImageFormat.Jpeg);
            stream.Seek(0, SeekOrigin.Begin);
            bitMap.Dispose();                                
            await Context.Channel.SendFileAsync(stream, "Text");                
        }

真的很快,因为我找不到具体的答案。我正在从我的硬盘驱动器中拍摄图像,将文本应用于图像并将其上传到服务器。它仅用于与模因相关的东西。

问题是,我不想在上传之前将其保存到硬盘。我宁愿将它保存在 MemoryStream 中。这里的结果是它上传图像,就好像它是文件传输一样,除非人们先下载它,否则不会显示图像。

我认为这是因为 Discord 没有区分流中的文件,而是简单地将其作为火传输发送。

有什么我可以做的吗?

抱歉,我似乎不小心偶然发现了自己的答案。如果其他人有这个问题,我会回答以帮助他们。

await Context.Channel.SendFileAsync(stream, "Text");  

第二个参数是文件的标题。根据您在 Bitmap.Save() 期间选择的文件格式,在标题后键入文件扩展名。在我的示例中,文本应为 Text.jpg。

似乎这样做会告诉 Discord 将其作为图像而不是文件传输上传。

尝试指定带有标识文件内容的扩展名的文件名,否则API没有关于您发送的文件类型的信息:

await Context.Channel.SendFileAsync(stream, "image.jpeg", "Text");