ASP.net下载并保存用户文件夹中的文件

时间:2014-07-06 07:50:38

标签: c# asp.net savefiledialog

我正在尝试将文件保存到用户个人电脑,但我无法做到。 此方法出错,因为尝试将文件保存在某处的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);
    }
}

如何将文件保存在用户计算机的下载文件夹中,或者提示用户文件以允许用户选择目的地?

2 个答案:

答案 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 + "\"");

这会根据浏览器设置提示用户下载文件。

您无法控制客户端计算机中的目录文件。