我有一个简单的网页,它生成一个 CSV 文件,我希望用户在创建完成后能够下载该文件。
以下是我的情况的摘要:
- CSV 文件可以在内存中或磁盘上创建。对我来说没关系。
- 完成 CSV 文件的传输后,我不希望它继续驻留在磁盘上。
- 我尝试了使用 Response.WriteFile、.TransmitFile、.BinaryWrite 和 .Write 的各种代码,但无济于事。
- 当我说“无济于事”时,我的意思是不是传输 CSV 文件,而是传输 CSV 文件的内容以及当前页面的整个内容!
- 我真的很困惑,因为我有另一个页面基本上做同样的事情,但是 PDF 文件捆绑在一个 zip 文件中,它工作得很好。
- 我真的是一名 Windows 桌面开发人员,但我正在努力成为一名网络开发人员。(很抱歉,如果这是一个愚蠢或菜鸟的问题。)
这是我用来发送包含 PDF 文件的 .zip 的代码:
Protected Sub SaveReportsButton_Click(sender As Object, e As EventArgs) Handles SaveReportsButton.Click
'' The .zip file is created elsewhere
Dim fullPath As String = Server.MapPath("~/Reports/" & Session.SessionID & ".zip")
Response.ContentType = "APPLICATION/OCTET-STREAM"
Dim fileToDownload As New FileInfo(fullPath)
Dim disHeader As String = "Attachment; Filename=""Reports.zip"""
Response.AppendHeader("Content-Disposition", disHeader)
Response.Flush()
Response.WriteFile(fileToDownload.FullName)
End Sub
这是我尝试传输 CSV 文件的代码:
Protected Sub saveButton_Click(sender As Object, e As System.EventArgs) Handles SaveOutput.Click
Dim list As List(Of String) = {"000000000", "000000000", "000000000"}.ToList()
Dim sb As New Text.StringBuilder
For i As Integer = 0 To list.Count - 1
Dim str As String = list(i)
sb.Append(str)
If i < list.Count - 1 Then
sb.Append(",")
End If
Next
Dim dirPath As String = Server.MapPath("~/Output/" & Session.SessionID)
IO.Directory.CreateDirectory(dirPath)
Dim filePath As String = Server.MapPath("~/Output/" & Session.SessionID & "/Output.csv")
IO.File.WriteAllText(filePath, sb.ToString())
Response.ContentType = "text/csv"
Dim disHeader As String = "Attachment; Filename=""Output.csv"""
Response.AppendHeader("Content-Disposition", disHeader)
Response.Flush()
Response.WriteFile(filePath)
End Sub
就像我说的,我希望通过此页面限制在服务器上创建和保留的文件,所以我想在完成后摆脱 CSV 文件。
有什么帮助吗?
谢谢!!!