c# - 如何将内存流下载到文件?

标签 c# asp.net memorystream

我正在使用下面的示例代码在 C# 中写入内存流并将其下载到文件中。

MemoryStream memoryStream = new MemoryStream();
TextWriter textWriter = new StreamWriter(memoryStream);
textWriter.WriteLine("Something");           
byte[] bytesInStream = new byte[memoryStream.Length];
memoryStream.Write(bytesInStream, 0, bytesInStream.Length);
memoryStream.Close();          
Response.Clear();
Response.ContentType = "application/force-download";
Response.AddHeader("content-disposition",
                   "attachment; filename=name_you_file.xls");
Response.BinaryWrite(bytesInStream);
Response.End();

我收到以下错误:

Specified argument was out of the range of valid values.
Parameter name: offset

可能是什么原因?

最佳答案

在您将数据复制到数组的代码中,TextWriter 可能尚未刷新数据。这将在您 Flush() 或 Close() 时发生。

看看这是否有效:

MemoryStream memoryStream = new MemoryStream();
TextWriter textWriter = new StreamWriter(memoryStream);
textWriter.WriteLine("Something");   
textWriter.Flush(); // added this line
byte[] bytesInStream = memoryStream.ToArray(); // simpler way of converting to array
memoryStream.Close(); 

Response.Clear();
Response.ContentType = "application/force-download";
Response.AddHeader("content-disposition", "attachment;    filename=name_you_file.xls");
Response.BinaryWrite(bytesInStream);
Response.End();

关于c# - 如何将内存流下载到文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16558317/

相关文章:

asp.net - 将用户从编辑页面重定向回调用页面

c# - 如何保存图像数据库并将其显示在网页的面板上?

c# - Windows -1252 不支持编码名称

c# - 如何查询基于双列为 "close to"某个值的数据集?

c# - 从 C# 调用 C++ dll 中的方法,没有任何信息,只有头文件

c# - 返回基于 int 的字符串

c# - 使用 ViewBag 的 Asp.net mvc 下拉列表

c# - 可以从字符串或内存流加载 App.Config 吗?

c# - 重用UDP服务器中的流

c# - 如何将文件从 MemoryStream 上传到 FTP 服务器