我有一个数据库表,其中用户标记要下载的文件。随后,我浏览此表并需要创建一个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