我正在使用下面的示例代码在 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/