我想弄清楚我們正在面對的下載問題,並且問題似乎只存在於Chrome中,並且僅適用於txt和csv文件。正如預期的那樣下載zip文件。 IE和Firefox適用於所有場景。 由於某些原因,Chrome無需正確設置名稱即可下載txt和csv文件。文件繼承從下載的頁面的名稱,並且沒有擴展名()。在Chrome中下載簡單的文本/ csv文件失敗
我有一個簡單的Webform只有3個linkbuttons一個相當簡單的代碼背後,我簡化了這個問題。
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
我試過將內容類型切換到「text/plain」或其他選項,因爲我在網上搜索了答案但沒有運氣。我覺得我錯過了一些東西,但是我找不到任何能夠在線回答我的問題的東西。 有沒有人有任何想法,爲什麼這可能會發生?
任何幫助表示讚賞。
我已經試過,甚至在發佈之前,它對Chrome沒有任何影響。 – DaRussian
嘿,謝謝你的幫助。我不知道WriteFile選項,但這似乎也不起作用。 改變到Response.WriteFile後(文件名,FALSE)的結果如下: CSV - 與「默認」的名字 郵編下載 - 下載就好了使用正確的名稱和擴展 TXT顯示以下:http://i.imgur.com/h8PVJPO.png – DaRussian
你可以嘗試爲MIME類型使用'application/csv'或'application/text',但這不是標準的一部分。它可能會給你你想要的文件名,但我不希望它能起作用。 –