将生成的文件保存到服务器

本文关键字:保存 服务器 文件 | 更新日期: 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);