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