我有一個數據庫表,其中用戶標記要下載的文件。隨後,我瀏覽此表並需要創建一個fileList傳遞給ActiveX下載程序。我的例程在本地和在服務器上僅用於第一個文件。我知道我的邏輯一定不好,但我找不到它。所有這些文件都始終是如下同一服務器的目錄:「d:\的Inetpub \虛擬主機\ WebSite.com \ sessionVideos \」如何檢索和下載服務器文件(File.Exists和URL)
Sub (GetFileList)
Dim dtVideosSelected As New DataTable
Dim drVideosSelected As New DataRow
Dim strSourceDirectory As String = "sessionVideos/"
Dim strServerBasePath As String = Server.MapPath(strSourceFileDirectory)
Dim strFileName As String
Dim fileInfo As System.IO.FileInfo
Dim i As Int16
Response.Clear()
Response.ContentType = "text/plain"
Response.Charset = "UTF-8"
i = 0
Do While i < dt VideosSelected.Rows.Count
drVideosSelected = dtVideosSelected.Rows(i)
strFileName = drVideosSelected("VID_FileName")
If File.Exists(strServerbasePath & strFileName)
fileInfo = New System.IO.FileInfo(strServerbasePath & strFileName)
Response.Write("*/* | " & fileInfo.Length & " | " & fileInfo.Name & " | ")
Response.Write(EncodeFileName(strSourceFileDirectory & fileInfo.Name) & vbCr
& vbLf)
End If
i += 1
Loop
Response.End()
Response.Flush()
End Sub
Private Function EncodeFileName(ByVal fullPath As String) As String
Return Server.UrlEncode(fullPath).Replace("+", "%20").Replace("%2f", "/")
End Function
我已經嘗試了很多不同的東西,但沒有成功。
詹姆斯
當你說這是行不通的,你的意思是該ActiveX控制研究沒有下載文件或你真的檢查了返回給瀏覽器的響應(像Fidler或Firebug中的net選項卡)並查看輸出結果(如果需要的話請包含它)。當你用調試器通過在i = 0語句中設置一個斷點並從那裏一步一步地運行來調試代碼時會發生什麼?你應該能夠看到它的功能。如果行數只有1或如果文件存在返回false等... – olle 2009-09-06 01:43:26
讀你的評論adatapost他/她的建議我現在明白,它在本地正常工作,但不在服務器上。這表明問題不在您的代碼邏輯中。而是在本地和服務器配置之間有所不同。請在本地和服務器上檢查http響應。包括標題並比較這兩個。 – olle 2009-09-06 01:45:47
對不起,我還不夠清楚。我的測試情況是,我有三個標記爲下載的文件(確認查詢返回這個)。我的循環在這裏只返回一個文件,而不是三個它應該。謝謝 - 詹姆斯 – James 2009-09-06 02:00:24