我在构建一个csv文件并将其发送到浏览器。在某些安装中,额外的字符被添加到http响应主体的开始处,并且销毁该文件。csv文件中的额外字符
这就是我的代码的样子。
Dim File As New Text.StringBuilder
File.Append("Batch Name,")
File.Append("Batch Accepted Total")
File.AppendLine
For Each Batch In Batches
File.Append(Batch.Name)
File.Append(",")
File.AppendFormat("{0:c}", Batch.AcceptedTotal)
File.AppendLine
Next
Dim FileName = "SomeFile.csv"
Dim Encoder = Text.Encoding.UTF8
Dim FileData = Encoder.GetBytes(File.ToString)
Response.Clear
Response.ClearHeaders
Response.Buffer = True
Response.AddHeader("Content-Disposition", "attachment;filename=" & FileName)
Response.ContentType = "text/plain"
Response.OutputStream.Write(FileData, 0, FileData.Length)
Controller.FileData = Nothing
Response.Flush
Response.End
只有一些安装可以做到这一点,而其他的则不行。我不知道为什么。如果我交换数据库,同一站点仍然存在问题。所以我知道这不是数据依赖。
这是个什么文件最终看起来像
781
Batch Name,Batch Accepted Total
3/8/2013,$961.24
Lincoln Payroll,$999.99
0
第一行改变718。它接缝取决于文件的大小。多余的0在结尾从不改变,我也不知道它来自哪里。
更新: 我发现第一行是以十六进制表示的内容的长度。同样删除此行将删除多余的字符。
Response.Flush
我还是不知道为什么。这条线不需要,所以我已经找到了一个修复程序,但如果有人知道发生了什么,我想听听它。