En los últimos días, tuve que implementar (como siempre, al apuro) una aplicación que visualice archivos PDF desde un repositorio central de archivos, utilizando Visual Basic .NET, con el limitante de que los archivos PDF que son visualizados no deben ser guardados directamente por el usuario en su computador.
Para esto, del lado del cliente, se implementó una pequeña aplicación que descarga el archivo PDF mediante una solicitud a una URL, utilizando la siguiente función:
Public Sub descargaArchivo(ByVal _urlOrigen As String, ByVal _archivoDestino As String) Try Dim _WebClient As New System.Net.WebClient() _WebClient.DownloadFile(_urlOrigen, _archivoDestino) Catch _Exception As Exception MessageBox.Show("Se ha Producido una excepción de descarga: {0}", _Exception.ToString(), MessageBoxButtons.OK, MessageBoxIcon.Error) End Try End Sub
El uso des esta funcion es sencillo: se ingresa como parámetros la url de descarga del archivo, y la ruta donde se desee guardar el mismo. Para ocultar un poco el acceso directo al archivo descargado, usamos la hora actual del sistema, y hacemos que guarde el archivo descargado en la carpeta temporal de windows, con los siguientes comandos:
Dim timestamp As String = Date.Now.TimeOfDay.ToString timestamp = timestamp.Replace(":", "") timestamp = timestamp.Replace(".", "") Dim archivo As String = System.IO.Path.GetTempPath.ToString + timestamp + ".pdf"
….. facil, sencillo y transparente para el usuario
Otra función que me resultó bastante útil, es la que realizamos para obtener un Código de Checksum SHA256 para comparar la huella de los archivos indexados en una base de datos contra los archivos descargados. La función es bastante sencilla, y es la siguiente:
Private Function calculaChecksum(archivo) As String Using Stream As FileStream = File.OpenRead(archivo) Dim sha As SHA256Managed = New SHA256Managed Dim checksum As Byte() = sha.ComputeHash(Stream) Return BitConverter.ToString(checksum).Replace("-", String.Empty) End Using End Function
Esta funcion requiere la ruta real de acceso al archivo del que se desea obtener el checksum, y devuelve el código hash como un string.
Para eta función, es necesario importar las siguiente librerías:
Imports System.IO Imports System.Security.Cryptography
que proveen soporte para el manejo de archivos, y las funciones de criptografía.
Deja una respuesta
Lo siento, debes estar conectado para publicar un comentario.