我正在创建一个流,我可以将其下载为PDF文件,也可以将其作为文件流返回为PDF格式。
但是我想将此流保存到PDF文件格式的文件夹中。
我正在使用一些代码来创建流:
public void PrintInvoice(long ID)
{
ReportDocument rd = new ReportDocument();
rd.Load(AppDomain.CurrentDomain.BaseDirectory+(@"ReportsInvoiceDocument.rpt"));
Stream stream = rd.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
stream.Seek(0, SeekOrigin.Begin);
return File(stream, "application/pdf", "TestCrystal.pdf");
}
如何将形成的流保存到文件夹中,以PDF文件格式保存?我想将 PDF 文件保存在客户端计算机上。
要在服务器上保存文件 -
using (MemoryStream ms = new MemoryStream())
{
stream.CopyTo(ms);
System.IO.File.WriteAllBytes(Server.MapPath("~/Report1.pdf"), ms.ToArray());
}
在客户端上保存文件 -
选项 1 - 使用 ActiveX,无需用户交互即可将文件保存在客户端计算机上
选项 2 - 使用 Silverlight,可以将文件放在客户端计算机上可用的隔离存储中
不幸的是,由于安全问题,您无法使用JQuery/JavaScript保存文件。还有许多其他选项,如Java小程序等。
我不明白为什么要从服务器端将文件保存在客户端计算机上。让用户承担这个责任,我的意思是让用户单击一个链接并从服务器获取文件并将其保存在他感兴趣的位置。如果服务器尝试在客户端计算机上保存/访问文件,您不认为这是安全问题吗?因此,我建议您重新考虑您的实现并提出不同的工作流程。