在过去的3天里,我一直在搜索Google/所以没有成功,我希望有人能帮助我或指出正确的方向。
我们有一种发送电子邮件的方法(一堆要过载)。我的任务是将电子邮件保存到数据库中。
问题
如何将附件的内容提取到byte[]中以便将其保存到数据库中?
我已经阅读了许多将附件保存到磁盘的示例,但我希望避免将附件保存到磁盘中,然后将其读入内存(这可能是我找不到任何东西的原因,因为它是不可能的,所以我怀疑它)。
发布于 2020-12-09 16:10:58
因此,我认为您的问题是如何将流转换为字节,这样您就不必将其保存到磁盘中。您可以使用这个扩展方法来完成这个任务。
public static class StreamExtensions
{
public static byte[] ReadAllBytes(this Stream instream)
{
if (instream is MemoryStream)
return ((MemoryStream) instream).ToArray();
using (var memoryStream = new MemoryStream())
{
instream.CopyTo(memoryStream);
return memoryStream.ToArray();
}
}
}请参阅https://stackoverflow.com/a/33611922/237109
用这种方法你可以做到这一点
System.Net.Mail.MailMessage m = new MailMessage();
foreach (var element in m.Attachments)
{
byte[] bytes = element.ContentStream.ReadAllBytes()
element.ContentType // you will want to save this as well so you can convert it to a file when you need to pull it back out of the database.
}https://stackoverflow.com/questions/65219876
复制相似问题