我有一个项目,我正在使用 PDF 生成器向用户发送文件。我们想让用户选择将此文件附加到电子邮件中,但我们在同时使用 Stream 对象和附件逻辑时遇到了问题。
我们从 ABCpdf 开始,它有两种保存方法:它可以保存到 Stream,或者如果你给它一个字符串,它会尝试保存到磁盘上的文件。我们都做了没有问题。
Stream stream = new MemoryStream();
myPdf.Save(stream);
此时一切都很酷 -stream
有几千字节的数据,如果你 .Save() 到一个文件,你会得到一个具有相同字节数的实际文件。
所以我们此时附加到一封电子邮件(在初始化邮件对象、设置 To: 和 From: 等之后):
mail.Attachments.Add(new Attachment(stream, "myPdf.pdf"));
mail.Send();
...这让我们收到一封 0 字节的电子邮件,但文件名正确。
我在网上找到的所有示例都使用 StreamReader 或 StreamWriter 或 Flush() 或其他东西。它似乎总是比简单地传递 Stream 更复杂,但可能只有一两行更复杂。这些示例都不是以 Stream 开头的 - 他们总是试图将数组转换为 Stream 以向您展示这是多么容易,或者从磁盘中获取文件(我们不能这样做,这就是我们兴奋的原因使用流)。
无论如何,如果有人能解释我做错了什么或我应该做什么,我将不胜感激。谢谢。