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

Posted

技术标签:

【中文标题】ASP.net 下载文件并保存在用户文件夹中【英文标题】:ASP.net download and save file in user folder 【发布时间】:2014-07-06 07:50:37 【问题描述】:

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

如何将文件保存在用户机器的下载文件夹中或提示文件对话框以允许用户选择目标?

【问题讨论】:

filestream 将写入服务器上的文件,而不是客户端计算机上的文件。尝试将文档字节写入响应输出流,并将内容处置 http 标头写入响应。 【参考方案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);

【讨论】:

发生了一些不同的事情,但文件没有被下载。它在浏览器中显示完全混乱。 非常感谢您的支持。我非常感谢额外的帮助。它工作正常。【参考方案2】:

Filestream 将写入服务器上的文件而不是客户端计算机上的文件。

尝试将文档字节写入响应输出流并将content-disposition http 标头写入响应。

Response.AddHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");

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

您无法控制进入客户端机器的目录文件。

【讨论】:

我正在尝试使用您的代码。如何将它集成到我的代码中?抱歉,我真的是个自学初学者。

以上是关于ASP.net 下载文件并保存在用户文件夹中的主要内容,如果未能解决你的问题,请参考以下文章

在codemirror textarea中下载文本[重复]

如何在GWT中下载文档时在新选项卡上显示消息

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

在 ASP.Net Core 中下载文件时,我的文件从服务器正确返回,但没有从 UI [重复]

从我的 ASP.NET 站点在 Android 3.0 浏览器中下载文件

mega同时下载文件数