【发布时间】:2014-04-03 16:13:26
【问题描述】:
我正在尝试找出我们在下载时遇到的问题,该问题似乎只存在于 Chrome 中,并且只存在于 txt 和 csv 文件中。下载 zip 文件按预期工作。 IE 和 Firefox 适用于所有场景。 出于某种原因,Chrome 会在没有正确设置名称的情况下同时下载 txt 和 csv 文件。文件继承下载它们的页面的名称,并且没有扩展名 ()。
我有一个简单的 Web 表单,只有 3 个链接按钮,后面有一个相当简单的代码,为了这个问题,我对其进行了简化。
Imports System.IO
Public Class _Default
Inherits Page
Private Const FILE_PATH_CSV As String = "D:\Temp\Download\testFile.csv"
Private Const FILE_PATH_ZIP As String = "D:\Temp\Download\testFile.zip"
Private Const FILE_PATH_TXT As String = "D:\Temp\Download\testFile.txt"
Private Sub btnDownloadCSV_Click(sender As Object, e As EventArgs) Handles btnDownloadCSV.Click
Dim file As New FileInfo(FILE_PATH_CSV)
If Not file.Exists() Then
Throw New Exception("No file")
End If
Try
DownloadFile(file)
Catch ex As Exception
'TODO: Log!
End Try
End Sub
Private Sub btnDownloadTXT_Click(sender As Object, e As EventArgs) Handles btnDownloadTXT.Click
Dim file As New FileInfo(FILE_PATH_TXT)
If Not file.Exists() Then
Throw New Exception("No file")
End If
Try
DownloadFile(file)
Catch ex As Exception
'TODO: Log!
End Try
End Sub
Private Sub btnDownloadZIP_Click(sender As Object, e As EventArgs) Handles btnDownloadZIP.Click
Dim file As New FileInfo(FILE_PATH_ZIP)
If Not file.Exists() Then
Throw New Exception("No file")
End If
Try
DownloadFile(file)
Catch ex As Exception
'TODO: Log!
Finally
With Response
.Flush()
.End()
End With
End Try
End Sub
Private Sub DownloadFile(ByVal file As FileInfo)
With Response
.Clear()
.ClearHeaders()
.ClearContent()
.Buffer = True
Response.ContentType = GetContentType(file)
Response.AddHeader("Content-Disposition:", String.Format("attachment;filename=""{0}""", file.Name.ToString()))
Response.AddHeader("Content-Length", file.Length.ToString())
Response.TransmitFile(file.FullName)
End With
End Sub
Private Function GetContentType(ByVal file As FileInfo)
Select Case file.Extension.ToLower()
Case ".txt", ".csv"
Return "application/octet-stream"
Case ".zip"
Return "application/x-zip-compressed"
Case Else
Return "application/octet-stream"
End Select
End Function
End Class
当我在网上搜索答案时,我尝试将内容类型切换为“文本/纯文本”或其他选项,但没有成功。我觉得我错过了一些东西,但我在网上找不到任何可以回答我问题的东西。 有谁知道为什么会发生这种情况?
感谢任何帮助。
【问题讨论】:
标签: asp.net .net vb.net google-chrome webforms