Subir archivos a MEGA desde Visual Basic Net --Actualizado mayo 2017--
Un saludo a todos mis seguidores de la programación vbnet, hace un tiempo acá esa un poco perdido en esto de los post, pero como Uds saben todos tenemos ocupaciones que a veces nos conllevan al descuido de otras. Pero qui me encuentro con todo el ánimo de seguir compartiendo, eso si códigos importantes que ayuden de forma significativa a los cibernautas.
Como dice el tema de este post,"Subir archivos a MEGA desde Visual Basic Net", tratar de subir archivos a mega que bien nos caería para nuestra aplicación sobre todo si quisiéramos respaldar alguna base de datos tipo access, compact, sqlite medianamente conectada y/o archivos como imágenes, videos, etc. Pues bien siguiendo en el desarrollo de este tema y siendo para mi bastante importante me encamine en buscar información relevante al tema y para los que no gustan de otro lenguaje, para vb no había o tal vez no supe buscar bien, en fin... Opte por modificar un ejemplo que ya nos venia. que Uds también pueden chequear y traducirlo de C# a nuestro lenguaje VB
Pues bien, lo primero que se debe hacer es descargar las librería de Mega que para nuestra facilidad lo podremos hacer desde nuestro propio entorno. Miren:
luego
descargamos e instalamos el paquete NuGet
Una vez instalado nos vamos al menu Administrador de paquetes NuGets
y luego buscamos mega en la caja de texto e instalamos el paquete MegaApiClient que necesitamos
y listo hasta aquí toca la parte del código:
Para el Form1
Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Try dialogosubir.ShowDialog() Catch ex As Exception MsgBox(ex.ToString) End Try End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Dim xlRuta As String = "" Dim Open As New OpenFileDialog With Open .Title = "Seleccionar Archivo" .Filter = "Todos los archivos(*.*)|*.*" .Multiselect = False .InitialDirectory = My.Computer.FileSystem.SpecialDirectories.Desktop If .ShowDialog = Windows.Forms.DialogResult.OK Then txtruta.Text = .FileName End If End With End Sub End Class
y para el dialogo de subida:
Imports System.ComponentModel Imports System.Threading Imports System.Windows.Forms Imports CG.Web.MegaApiClient Public Class dialogosubir 'Declaración de un hilo Private t As Thread 'Evento Shown que instancia y ejecuta el hilo (este evento se ejecuta después del Load). ' Método que se encarga de subir el archivo a la nube con la Api "Mega". Private Sub subir_AMega() Try ' Actualizar el label para informar al usuario. lblinfo.Invoke(New MethodInvoker(Sub() lblinfo.Text = "Conectando como 'correo'")) ' Aumentar la barra de progreso. ProgressBar1.Invoke(New MethodInvoker(Sub() ProgressBar1.PerformStep())) ' Instancia de un cliente para conectar con mega. Dim cliente As New MegaApiClient() 'z ' Inicio de sesión con el cliente, pasando el correo y la contraseña de la cuenta mega a la que se sube el archivo. cliente.Login("micorreo.com", "mypassword") ' Aumentar la barra de progreso. ProgressBar1.Invoke(New MethodInvoker(Sub() ProgressBar1.PerformStep())) ' Actualizar el label para informar al usuario. lblinfo.Invoke(New MethodInvoker(Sub() lblinfo.Text = "Obteniendo directorios...")) ' Obtenemos los nodos (directorios/archivos) de la cuenta dentro de una variable. Dim nodos = cliente.GetNodes() ' Actualizar el label para informar al usuario. lblinfo.Invoke(New MethodInvoker(Sub() lblinfo.Text = "Buscando carpeta 'SUBIR_MEGA'...")) ' Comprobar si existe algún nodo (directorio) que se llame "SUBIR_MEGA" (en mi caso quiero subir el archivo a dicha carpeta). Dim existe As Boolean = cliente.GetNodes().Any(Function(n) n.Name = "SUBIR_MEGA") ' Crear dos nodos. Dim root As INode Dim carpeta As INode ' Si el directorio SUBIR_MEGA existe, se obtiene. Si no existe, se crea. If existe = True Then ' Actualizar el label para informar al usuario. lblinfo.Invoke(New MethodInvoker(Sub() lblinfo.Text = "Obteniendo la carpeta 'SUBIR_MEGA'....")) ' Aumentar la barra de progreso. ' ProgressBar1.Invoke(New MethodInvoker(Sub() ProgressBar1.PerformStep())) ' Obtenemos el directorio. carpeta = nodos.[Single](Function(n) n.Name = "SUBIR_MEGA") Else ' Actualizar label para informar al usuario. lblinfo.Invoke(New MethodInvoker(Sub() lblinfo.Text = "Creando carpeta 'SUBIR_MEGA'...")) ' Aumentar la barra de progreso. ' ProgressBar1.Invoke(New MethodInvoker(Sub() ProgressBar1.PerformStep())) 'Obtenemos el nodo raíz. root = nodos.[Single](Function(n) n.Type = NodeType.Root) ' Creamos el directorio llamado "SUBIR_MEGA" en la raíz. carpeta = cliente.CreateFolder("SUBIR_MEGA", root) End If ' Aumentar la barra de progreso. ProgressBar1.Invoke(New MethodInvoker(Sub() ProgressBar1.PerformStep())) ' Actualizar label para informar al usuario. lblinfo.Invoke(New MethodInvoker(Sub() lblinfo.Text = "Subiendo archivo...")) ' Aumentar la barra de progreso. ' ProgressBar1.Invoke(New MethodInvoker(Sub() ProgressBar1.PerformStep())) ' Subimos el archivo al directorio "SUBIR_MEGA", pasando la ruta del archivo a subir y el directorio de mega donde debe subirlo. 'BackgroundWorker1.RunWorkerAsync() Dim archivo As INode = cliente.UploadFile(Form1.txtruta.Text, carpeta) ' Obtener el link de descarga del archivo subido por si se requiere para algo. ProgressBar1.Invoke(New MethodInvoker(Sub() ProgressBar1.PerformStep())) Dim downloadUrl As Uri = cliente.GetDownloadLink(archivo) ' Actualizar label para informar al usuario. lblinfo.Invoke(New MethodInvoker(Sub() lblinfo.Text = "Archivo subido con éxito.")) MsgBox("Archivo subido con éxito.", vbExclamation) Catch [error] As Exception ' Algo ha fallado, abortamos el subproceso. ' Mensaje en pantalla para informar al usuario del error. MessageBox.Show("Error al intentar subir el archivo. " + [error].Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.[Error]) t.Abort() End Try ' No se puede cerrar el form desde un subproceso ya que no es desde donde se ha creado. Con este código podemos cerrarlo. Me.Invoke(DirectCast(Sub() Me.Close(), MethodInvoker)) End Sub Private Sub dialogosubir_Shown(sender As Object, e As EventArgs) Handles Me.Shown Try 'Instancia un hilo para ejecutar el método "subirArchivoAMega". t = New Thread(AddressOf subir_AMega) t.Start() Catch ex As Exception ex.ToString() End Try End Sub End Class
Estas capturas muestran en funcionamiento
El archivo subido
Bueno, esto es todo, espero sus buenos comentarios, y sobre todo que les sirva, nos vemos en otra entrega
Link de mi ejemplo:https://mega.nz/#!wYVVjTJa!e9XATB77oeqFEmRgorSub68LJeH2QajFE1bX1NPJa9Q
Gracias! Tengo una pregunta como puedo crear una carpeta dentro de la otra? Y como puedo visualizar el documento que he subido?
ResponderEliminarBaje el programa para utilizar el código en mi proyecto, pero al llegar a la línea:
ResponderEliminarcliente.Login("correo", "contraseña")
Se queda subiendo el archivo pero no se visualiza nada en Mega
Me pasa lo mismo pero uso net core, se queda pasmado al realizar multiples consultas.
Eliminar