我正在开发ASP.Net/VB.Net web应用程序,当单击页面上的按钮时,将在该应用程序中生成文件并将其发送到客户端。我有以下代码来做到这一点:-
Dim text_file_name As String = WriteOutputFile() ' Generate output file
Response.ClearContent()
Response.Clear()
Response.ContentType = "text/plain"
Response.AddHeader("Content-Disposition", "attachment; filename=" + text_file_name + ";")
Response.Flush()
HttpContext.Current.ApplicationInstance.CompleteRequest()
File.Delete(text_file_name)
这似乎已经完成,并且文件已经正式下载,但打开它时,我发现它包含网页HTML,而不是预期的文件文本。不过,我观察到文件(扩展名.csv)是在Excel中打开的,所以它至少得到了消息的那一部分。
我已经通过省略file.Delete并观察文件在服务器目录中的累积来验证文件是否按预期创建。
在之前的一次尝试中,我有
Response.End()
代替完整的请求;这还生成了一个.csv文件,但其中包含线程异常的详细信息。
有人知道我做错了什么吗?
您将预期的文件名作为头提示发送到浏览器,但实际上并没有发送文件本身。为此,请使用Response.WriteFile()