Option Strict On Imports System.IO Imports System.Data Imports Extensiones Partial Class Contabilidad_DescargaRespaldos Inherits ClsPaginas Protected rutaCon As String = "" Protected rutaRes As String = "" Private Sub Contabilidad_DescargaRespaldos_Load(sender As Object, e As EventArgs) Handles Me.Load If Not Page.IsPostBack Then Dim empresa As Empresa = getEmpresaBDContPAQi() Dim pilaUrl As New List(Of String) ViewState("URLS") = pilaUrl ViewState("URLR") = "/" ViewState("FEMPRESA") = empresa.BDContPAQi ViewState("URLACTUAL") = "" Else End If Try 'addCaragaLinksInicio() loadEvent() Catch ex As Exception End Try End Sub Private Sub directorioDefault() End Sub Private Sub loadEvent() Dim lista As List(Of String) = DirectCast(ViewState("URLS"), List(Of String)) If getUrl() = "" Then addCargaLinksInicio() Else cargarFolderActual() End If End Sub Private Sub addCargaLinksInicio() Dim empresa As Empresa = getEmpresaBDContPAQi() Dim BDContPAQi As String = empresa.BDContPAQi lblEmpresa.Text = "Empresa: " & empresa.Empresa Dim listaFile As New List(Of String) Dim listaDir As New List(Of String) Dim listaNombres As New List(Of String) Dim GB As Integer = 1073741824 Dim MB As Integer = 1048576 Dim KB As Integer = 1024 Dim resultado As Double = 0.0 listaFile.Clear() listaDir.Clear() tdBodyDescargas.Controls.Clear() If (BDContPAQi <> "") Then tdBodyDescargas.Controls.Add(New LiteralControl("")) tdBodyDescargas.Controls.Add(New LiteralControl("CONTPAQI")) tdBodyDescargas.Controls.Add(New LiteralControl("")) tdBodyDescargas.Controls.Add(New LiteralControl("")) tdBodyDescargas.Controls.Add(New LiteralControl("Carpeta")) Dim lnkConpaq As New ImageButton lnkConpaq.ID = "lnkContPaq" lnkConpaq.ImageUrl = "~/Imagenes/folder.png" lnkConpaq.PostBackUrl = "#" lnkConpaq.Attributes.Add("data-toggle", "tooltip") lnkConpaq.Attributes.Add("data-placement", "right") lnkConpaq.Attributes.Add("title", "Acceder") AddHandler lnkConpaq.Click, AddressOf Me.lnkFolderCompaqt tdBodyDescargas.Controls.Add(New LiteralControl("")) tdBodyDescargas.Controls.Add(lnkConpaq) tdBodyDescargas.Controls.Add(New LiteralControl("")) tdBodyDescargas.Controls.Add(New LiteralControl("")) tdBodyDescargas.Controls.Add(New LiteralControl("")) tdBodyDescargas.Controls.Add(New LiteralControl("RESPALDOS")) tdBodyDescargas.Controls.Add(New LiteralControl("")) tdBodyDescargas.Controls.Add(New LiteralControl("")) tdBodyDescargas.Controls.Add(New LiteralControl("Carpeta")) Dim lnkRes As New ImageButton lnkRes.ID = "lnkRes" lnkRes.ImageUrl = "~/Imagenes/folder.png" lnkRes.PostBackUrl = "#" lnkRes.Attributes.Add("data-toggle", "tooltip") lnkRes.Attributes.Add("data-placement", "right") lnkRes.Attributes.Add("title", "Acceder") AddHandler lnkRes.Click, AddressOf Me.lnkFolderRes tdBodyDescargas.Controls.Add(New LiteralControl("")) tdBodyDescargas.Controls.Add(lnkRes) tdBodyDescargas.Controls.Add(New LiteralControl("")) tdBodyDescargas.Controls.Add(New LiteralControl("")) Else dvPanel.Visible = False Alert("No se encontraron descargas relacionadas.", TipoMensaje.MsgAdvertencia) End If udpDescargas.Update() End Sub Protected Sub lnkFolderCompaqt(sender As Object, e As EventArgs) addUrl(Path.Combine(System.Configuration.ConfigurationManager.AppSettings("ContPAQDescargas").ToString, ViewState("FEMPRESA").ToString)) cargarFolderActual() End Sub Protected Sub lnkFolderRes(sender As Object, e As EventArgs) If System.Configuration.ConfigurationManager.AppSettings("RespaldosArchivos") <> Nothing Then addUrl(Path.Combine(System.Configuration.ConfigurationManager.AppSettings("RespaldosArchivos"), ViewState("FEMPRESA").ToString)) cargarFolderActual() End If End Sub Private Sub cargarFolderActual() tdBodyDescargas.Controls.Clear() Dim empresa As Empresa = getEmpresaBDContPAQi() Dim BDContPAQi As String = empresa.BDContPAQi Dim contador As Integer = 0 Dim listaFile As New List(Of String) Dim listaDir As New List(Of String) Dim listaNombres As New List(Of String) Dim GB As Integer = 1073741824 Dim MB As Integer = 1048576 Dim KB As Integer = 1024 lblEmpresa.Text = "Empresa: " & empresa.Empresa Dim resultado As Double = 0.0 listaFile.Clear() listaDir.Clear() If (BDContPAQi <> "") Then Try Dim ruta As String = getUrl() listaFile.AddRange(Directory.GetFiles(ruta)) listaDir.AddRange(Directory.GetDirectories(ruta)) dvPanel.Visible = True For Each d In listaDir Dim di As New DirectoryInfo(d) tdBodyDescargas.Controls.Add(New LiteralControl("")) tdBodyDescargas.Controls.Add(New LiteralControl("" & di.Name & "")) tdBodyDescargas.Controls.Add(New LiteralControl("")) tdBodyDescargas.Controls.Add(New LiteralControl("" & di.CreationTime.ToString("dd/MM/yyyy") & "")) tdBodyDescargas.Controls.Add(New LiteralControl("Carpeta")) Dim lnk As New ImageButton lnk.ID = "lnkFol" & contador lnk.Attributes.Add("fname", di.Name) lnk.ImageUrl = "~/Imagenes/folder.png" lnk.PostBackUrl = "#" lnk.PostBackUrl = "#" lnk.Attributes.Add("data-toggle", "tooltip") lnk.Attributes.Add("data-placement", "right") lnk.Attributes.Add("title", "Acceder") AddHandler lnk.Click, AddressOf Me.lnkFolder tdBodyDescargas.Controls.Add(New LiteralControl("")) tdBodyDescargas.Controls.Add(lnk) tdBodyDescargas.Controls.Add(New LiteralControl("")) tdBodyDescargas.Controls.Add(New LiteralControl("")) contador = contador + 1 Next contador = 0 For Each s In listaFile Dim fi As New FileInfo(s) Dim sLen As String = fi.Length.ToString() If fi.Length >= (GB) Then resultado = fi.Length / GB sLen = String.Format("{0} Gb", resultado.ToString("#.##")) ElseIf fi.Length >= (MB) Then resultado = fi.Length / MB sLen = String.Format("{0} Mb", resultado.ToString("#.##")) ElseIf fi.Length >= (KB) Then resultado = fi.Length / KB sLen = String.Format("{0} Kb", resultado.ToString("#.##")) End If tdBodyDescargas.Controls.Add(New LiteralControl("")) tdBodyDescargas.Controls.Add(New LiteralControl("" & fi.Name & "")) tdBodyDescargas.Controls.Add(New LiteralControl("" & sLen & "")) tdBodyDescargas.Controls.Add(New LiteralControl("" & fi.CreationTime.ToString("dd/MM/yyyy") & "")) tdBodyDescargas.Controls.Add(New LiteralControl("Archivo")) Dim lnk As New ImageButton lnk.ID = "lnkDes" & contador lnk.Attributes.Add("fname", fi.Name) lnk.ImageUrl = "~/Imagenes/Abajo.png" lnk.PostBackUrl = "#" lnk.Attributes.Add("data-toggle", "tooltip") lnk.Attributes.Add("data-placement", "right") lnk.Attributes.Add("title", "Descargar") AddHandler lnk.Click, AddressOf Me.lnkBtnDownload tdBodyDescargas.Controls.Add(New LiteralControl("")) tdBodyDescargas.Controls.Add(lnk) tdBodyDescargas.Controls.Add(New LiteralControl("")) tdBodyDescargas.Controls.Add(New LiteralControl("")) contador = contador + 1 udpDescargas.Update() Next Catch ex As Exception Alert("Error al obtener Archivos." & ex.Message, TipoMensaje.MsgAdvertencia) dvPanel.Visible = False End Try Else dvPanel.Visible = False Alert("No se encontraron descargas relacionadas.", TipoMensaje.MsgAdvertencia) End If udpDescargas.Update() End Sub Protected Sub lnkFolder(sender As Object, e As EventArgs) Dim lnk As ImageButton lnk = DirectCast(sender, ImageButton) Dim nombre As String = lnk.Attributes("fname") addUrl(nombre) cargarFolderActual() End Sub Protected Sub lnkBtnDownload(sender As Object, e As EventArgs) Dim empresa As Empresa = getEmpresaBDContPAQi() Dim BDContPAQi As String = empresa.BDContPAQi Dim ruta As String = getUrl() Dim lnk As ImageButton lnk = DirectCast(sender, ImageButton) Dim nombre As String = lnk.Attributes("fname") Dim filename As String = Path.Combine(ruta, nombre) If filename <> "" Then Dim file As New System.IO.FileInfo(filename) If file.Exists Then Response.Clear() Response.AddHeader("Content-Disposition", "attachment; filename=" & cleanFileName(file.Name)) Response.AddHeader("Content-Length", file.Length.ToString()) Response.ContentType = "application/octet-stream" Response.TransmitFile(file.FullName) Response.End() Else End If End If End Sub Private Shared ReadOnly AllowedChars As Dictionary(Of Char, Char) = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ._()0123456789".ToDictionary(Function(c) c) Private Function cleanFileName(fileName As String) As String Dim newFileName As Char() = fileName.ToCharArray() For i As Integer = 0 To newFileName.Length - 1 If Not AllowedChars.ContainsKey(newFileName(i)) Then newFileName(i) = "_"c End If Next Return New String(newFileName) End Function Private Function getEmpresaBDContPAQi() As Empresa Dim objEmpresa As New ClsSisEmpresas() Dim empresa As New Empresa If objEmpresa.GetEmpresas(UsuarioActual.CveEmpresa, "-1", "-1", "-1", "-1") Then ' If objEmpresa.GetEmpresas(4, "-1", "-1", "-1", "-1") Then empresa = objEmpresa.Empresa End If objEmpresa.Dispose() Return empresa End Function Private Function getUrl() As String Dim listaUrl As List(Of String) = DirectCast(ViewState("URLS"), List(Of String)) Dim tempUrl As String = "" If listaUrl.Count > 0 Then tempUrl = listaUrl(listaUrl.Count - 1) End If Return tempUrl End Function Private Sub addUrl(ByVal folder As String) Dim listaUrl As List(Of String) = DirectCast(ViewState("URLS"), List(Of String)) Dim tempUrl As String If listaUrl.Count = 0 Then listaUrl.Add(folder) Else tempUrl = Path.Combine(listaUrl(listaUrl.Count - 1), folder) listaUrl.Add(tempUrl) End If End Sub Private Sub removerUltimaUrl() Dim urls As List(Of String) = DirectCast(ViewState("URLS"), List(Of String)) If urls.Count > 0 Then urls.RemoveAt(urls.Count - 1) End If End Sub Protected Sub btnImgBack_Click(sender As Object, e As ImageClickEventArgs) Handles btnImgBack.Click removerUltimaUrl() If getUrl() = "" Then addCargaLinksInicio() Else cargarFolderActual() End If End Sub Protected Sub btnHome_Click(sender As Object, e As ImageClickEventArgs) Handles btnHome.Click Dim urlLista As New List(Of String) ViewState("URLS") = urlLista addCargaLinksInicio() End Sub End Class