Как получить и загрузить файлы сервера (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()