Как получить и загрузить файлы сервера (File.Exists и URL)

У меня есть таблица базы данных, где пользователь помечает файлы для загрузки. Впоследствии я просматриваю эту таблицу и мне нужно создать fileList для передачи загрузчику ActiveX. Моя процедура работает локально и на сервере только для первого файла. Я знаю, что моя логика должна быть плохой, но я не могу ее найти. Все эти файлы всегда находятся в одном каталоге сервера, который выглядит следующим образом: "D:\inetpub\vhosts\WebSite.com\sessionVideos\"

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

Я пробовал много разных вещей без успеха.

Джеймс

2 ответа

Решение

Хорошо, у нас есть ответ.... У меня фактически были двойные расширения файлов, которые не работали, но опция скрытия известных расширений была включена (я думаю, по умолчанию). Файлы.avi выглядели так же, как и другие, поэтому я думаю, что.avi считался "неизвестным" типом файлов. Без разницы!

Ответ на мой другой пост здесь:

Почему FileInfo показывает дополнительное расширение файла?

Спасибо Джеймс

Чтобы скачать файл,

Dim b() As Byte = System.IO.File.ReadAllBytes(strServerbasePath & strFileName)
Response.Clear()
Response.ClearHeader()
Response.AddHeader("Content-Type: application/octate-stream")
Repponse.AddHeader("Content-Length: " & b.Length)
Response.AddHeader("Content-Disposition: attachment; filename=" & strFileName)
Response.BinaryWrite(b)
Response.Flush()
Response.End()
Другие вопросы по тегам