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

时间:2019-06-07 21:13:20

标签: c# discord discord.net

    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不会区分文件在流中的内容,而只是将其作为直接传输来发送。

我能做些什么吗?

2 个答案:

答案 0 :(得分:1)

我很抱歉,但我似乎偶然发现了自己的答案。万一其他人有这个问题,我会回答,以帮助他们。

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

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

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

答案 1 :(得分:1)

尝试指定带有扩展名的文件名来标识文件内容,如果没有该API,API将不提供您要发送的文件类型的信息:

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