c# - asp.net filehelpers 直接写文件到客户端

标签 c# asp.net filehelpers

我正在为 C# .net 项目使用 FileHelpers 库。一切正常,除了我需要通过单击按钮来保存生成的 CSV。

所以用户点击一个按钮,他们会得到保存文件的提示。我知道 Filehelpers 有一个 WriteStream 选项,但他们自己的文档只显示了 WriteFile 的一个示例。我不知道 WriteStream 是否是所需要的,但我认为是。

有人知道是否可以将 CSV 文件直接保存到客户端而不是服务器硬盘吗?

谢谢。

更新更多细节:

我将尝试提供更多细节以帮助阐明我要实现的目标。我不想在服务器上保存任何文件。我正在使用 FileHelpers 生成记录,我想尝试使用他们的 WriteStream 方法将该记录作为 CSV 直接写入他们的浏览器;但奇怪的是,他们提供的示例实际上根本没有使用该方法。

这是他们方法的链接:

http://www.filehelpers.com/FileHelpers.FileHelperEngine.WriteStream_overload_2.html

这是有问题的方法。

public void WriteStream(
   TextWriter writer,
   IEnumerable records,
   int maxRecords
);

我可以轻松地将文件保存到服务器,但我不想这样做,因为我不需要它,并且想让客户端将它直接保存到他们自己的机器上。

可能我必须通过正常途径才能实现此目的,但我看到了 WriteStream 方法,并认为 FileHelpers 可能提供了一种实现相同结果的简洁方法。

希望这更清楚。

最佳答案

您应该能够执行以下操作:

Response.ContentType = @"application/x-msdownload";
Response.AppendHeader("content-disposition", "attachment; filename=" + FILE_NAME);

Response.Write(csv.ToString());
Response.Flush();
Response.End();

在 StackOverflow 上有很多更详尽的建议,例如 this one .这取决于您要实现的目标。

编辑

我认为您缺少的步骤是:

MemoryStream stream = new MemoryStream();
StreamWriter streamWriter = new StreamWriter(stream);
engine.WriteStream(streamWriter, records);
stream.Position = 0;

然后你就可以使用了

StreamReader reader = new StreamReader(stream);
Response.Write(reader.ReadToEnd);

在我上面的第一个示例中,而不是 Response.Write(csv.ToString())

关于c# - asp.net filehelpers 直接写文件到客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15573598/

相关文章:

c# - 为什么 Visual Studio 在调试时会跳过我的方法?

c# - 需要一个 Javascript 日历,它应该只显示与文本框中的日期相对应的下一个日期

asp.net - 在代码隐藏文件 C# 中将 boundField 添加到 gridview

C# CSV Filehelpers 比较同一文件中的两行,添加和删除行

c# - FileHelpers:非引号 CSV 中的可选字段

visual-studio-2010 - 我通过 Nuget 添加了 `Marcos Melis Filehelpers` 并且收到了一个我不明白的警告,这是什么意思?

c# - 优化构造函数调用

c# - 使用 LINQ 从 Microsoft CRM 检索数据时出现奇怪的行为

javascript - 从 DropBox 上传现场文件

ASP.NET MVC 通过表单例份验证真正注销