将生成的文件保存到服务器
本文关键字:保存 服务器 文件 | 更新日期: 2023-09-27 17:56:36
我正在使用方便的 iText for C# 生成一个 PDF。现在,我基本上只需要生成此PDF并通过电子邮件发送即可。目前,我可以生成PDF格式的文件,但我不想硬编码保存文件的路径。例如,我像这样保存文件:
string file = "C:''Receipts'" + ConfirmationNumber + ".pdf";
现在,硬编码这样的路径完全违背了最佳实践。如何按照最佳实践正确保存文件?也许到项目本身内的文件夹?感谢您的任何帮助。
你必须将文件写入磁盘吗? 很容易将iText创建的pdf直接发送到来自Brianng的SO答案的电子邮件
var doc = new Document();
MemoryStream memoryStream = new MemoryStream();
PdfWriter writer = PdfWriter.GetInstance(doc, memoryStream);
doc.Open();
doc.Add(new Paragraph("First Paragraph"));
doc.Add(new Paragraph("Second Paragraph"));
writer.CloseStream = false;
doc.Close();
memoryStream.Position = 0;
MailMessage mm = new MailMessage("username@gmail.com", "username@gmail.com")
{
Subject = "subject",
IsBodyHtml = true,
Body = "body"
};
mm.Attachments.Add(new Attachment(memoryStream, "filename.pdf"));
SmtpClient smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
Credentials = new NetworkCredential("username@gmail.com", "password")
};
smtp.Send(mm);
如果你有 HttpContext,你可以使用 PhysicalApplicationPath。
string filePath = string.Format("{0}''App_Data''ExportImport''{1}",
HttpContext.Current.Request.PhysicalApplicationPath, fileName);
如果您没有 HttpContext,则可以使用 AppDomainAppPath。
string filePath = string.Format("{0}App_Data''ExportImport''{1}",
HttpRuntime.AppDomainAppPath, fileName);