我正在尝试将文件保存到用户个人电脑,但我无法做到。 此方法出错,因为尝试将文件保存在某处的C中。我明白这不合适。我想将文件保存在下载文件夹中,或者通过文件对话框提示用户。
void SaveReport(Telerik.Reporting.Report report, string fileName)
{
ReportProcessor reportProcessor = new ReportProcessor();
Telerik.Reporting.InstanceReportSource instanceReportSource = new Telerik.Reporting.InstanceReportSource();
instanceReportSource.ReportDocument = report;
RenderingResult result = reportProcessor.RenderReport("PDF", instanceReportSource, null);
using (FileStream fs = new FileStream(fileName, FileMode.Create))
{
fs.Write(result.DocumentBytes, 0, result.DocumentBytes.Length);
}
}
如何将文件保存在用户计算机的下载文件夹中,或者提示用户文件以允许用户选择目的地?
答案 0 :(得分:1)
您无法强制下载文件的位置。
在您的代码中,您不应该写入文件,而应该写入响应中的OutputStream
。
RenderingResult result = reportProcessor.RenderReport("PDF", instanceReportSource, null);
HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=\"file.pdf\"");
HttpContext.Current.Response.OutputStream.Write(result.DocumentBytes, 0, result.DocumentBytes.Length);
答案 1 :(得分:0)
Filestream将写入服务器上的文件而不是客户端的计算机上。
尝试将文档字节写入响应输出流,并将content-disposition
http标头写入响应。
Response.AddHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
这会根据浏览器设置提示用户下载文件。
您无法控制客户端计算机中的目录文件。