Utilizzare dropbox con vb.net

di il
10 risposte

Utilizzare dropbox con vb.net

Buongiorno a tutti, sono un nuovo iscritto e spero di trovare un aiuto ad un problema che mi sta tormentando da giorni

ho la necessità, all'interno di un programma da me sviluppato, di poter selezionare un file in locale, caricarlo su dropbox, ed ottenere il relativo link pubblico di condivisione

ho già registrato una app su dropbox, ho il token, ho cercato esempi ed aiuti in rete ma la quasi totalità sono in c# o in c++ e pur masticandone poco di quei linguaggi, non sono riuscito a cavarne nulla

ho provato anche ad usare chilcat, con il periodo di prova gratuito, ma anche in quel caso nisba

ringrazio per l'attenzione e spero davvero in un aiuto

Fabio

10 Risposte

  • Re: Utilizzare dropbox con vb.net

    Se hai trovato degli esempi in c# puoi provare a convertirli in vb .net usando sharpdevelop ,fino alla versione 4.4 ,fai sapere come và,ciao
    P.S. le offerte di lavoro sarebbero proibite sul forum
  • Re: Utilizzare dropbox con vb.net

    Grazie della risposta gian82 , ho provveduto a correggere il post rimuovendo la parte non ammessa per la quale chiedo scusa

    per quanto riguarda la conversione non è quello il problema, il gatto è che non sono riuscito a far funzionare gli esempi che ho trovato in c# o in c## quindi è perfettamente inutile convertirli (oltretutto se ci fosse un codice funzionante in c# potrei usarlo senza problemi creando una dll)

    spero in notizie migliori
  • Re: Utilizzare dropbox con vb.net

    Facci vedere l'esempio in C#
  • Re: Utilizzare dropbox con vb.net

    C'è poco da fare vedere, è il codice ufficiale disponibile su github https://github.com/dropbox/dropbox-sdk-dotne e sinceramente per me è davvero poco comprensibile, perlomeno per ciò che ho bisogno di fare

    questo che invece credevo fosse la via più semplice, ovvero uno spunto in vb.net non c'è verso di farlo andare
    (ovviamente i messaggi nella textbox li ho messi solo x il debug, mentre le parti commentate erano già così nell'esempio)
    Imports System.IO
    Imports RestSharp
    
    Public Class Form1
      Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    
        Try
    
          TextBox1.AppendText("Punto 1" & vbCrLf)
    
          Dim sourceFile As String = "ilmiofiledacaricare.jpg"
          Dim data As Byte() = File.ReadAllBytes(sourceFile)
          Dim RestClient As RestClient = New RestClient("https://content.dropboxapi.com/2/files/upload")
          Dim request As IRestRequest = New RestRequest(Method.POST)
    
          TextBox1.AppendText("Punto 2" & vbCrLf)
    
          request.AddHeader("Content-Type", "application/octet-stream")
          request.AddHeader("Authorization", "Bearer <IL MIO TOKEN>")
          request.Parameters.Clear()
          Dim meta As String = "{\ path\:/home/ilmiofilecaricato.jpg \mode\: add \ strict_conflict\:false,\autorename\: true,\mute\: false}"
    
          TextBox1.AppendText("Punto 3" & vbCrLf)
    
          request.AddHeader("Dropbox-API-Arg", meta)
          '  request.AddHeader("Content-Length", fileLength.ToString())
    
          '   request.AddParameter("path", "/home/proximus_logo.png")
          '   request.AddParameter("mode", "add")
          '   request.AddParameter("autorename", True)
          '   request.AddParameter("mute", False)
          '   request.AddParameter("strict_conflict", False)
    
          request.AddParameter("application/octet-stream", data, ParameterType.RequestBody)
    
          TextBox1.AppendText("Punto 4" & vbCrLf)
    
          Dim response As RestResponse = RestClient.Execute(request)
    
          If response.IsSuccessful Then
    
            TextBox1.AppendText("SUCCESS: " & response.StatusDescription & vbCrLf)
            'Console.WriteLine("SUCCESS: " & response.StatusDescription)
          Else
            TextBox1.AppendText("FAILED: " & response.StatusDescription & vbCrLf)
          End If
    
          TextBox1.AppendText("response.Content : " & response.Content & vbCrLf)
    
        Catch ex As Exception
    
          TextBox1.AppendText("Errore : " & ex.Message & vbCrLf)
    
        End Try
    
        TextBox1.AppendText("Completato" & vbCrLf)
    
      End Sub
    End Class
  • Re: Utilizzare dropbox con vb.net

    1) sei riuscito ad installare la loro libreria ?
    2) sei riuscito a interfacciarti con la loro libreria ?
    3) sei riuscito a far funzionare l'esempio alla pagina https://www.dropbox.com/developers/documentation/dotnet#tutorial ??

    Quello che devi fare in VB.NET è semplicemente questo:
    using Dropbox.Api;
    using (var dbx = new DropboxClient("YOUR ACCESS TOKEN"))
            {
                var full = await dbx.Users.GetCurrentAccountAsync();
                Console.WriteLine("{0} - {1}", full.Name.DisplayName, full.Email);
            }
    Eventualmente vedi se puoi usare un metodo sincrono anzichè il GetCurrentAccountAsync in modo da semplificarti la vita senza usare (per adesso) i task
  • Re: Utilizzare dropbox con vb.net

    SirJo ho preso spunto dalle tue preziose indicazioni, e perlomeno in modalità console ed in c# funziona (incredibile!!)

    Ora vedo se riesco a fare qualche passo in avanti, devo cercare di capire un po' di più la "mentalità" del C# ma almeno ho iniziato a vedere un risultato

    Grazie davvero
  • Re: Utilizzare dropbox con vb.net

    Per abituarti alla sintassi ed alla mentalità c# puoi usare anche il libro (gratuito) https://introprogramming.info/english-intro-csharp-book/ ,l'istruzione using merita la lettura di un brevissimo articolo https://docs.microsoft.com/it-it/dotnet/csharp/language-reference/keywords/using-statement
  • Re: Utilizzare dropbox con vb.net

    Allora, sono riuscito a convertire il codice C# nel più familiare VB e questo è ciò che sono riuscito a fare
    per comodità uso le forms anzichè la console, quindi per riprodurlo basta poco (in ogni caso allego la soluzione di test completa)

    il cuore sono queste due semplici routine, che x semplificare ho banalmente incluso in due eventi button, e tutto funziona perfettamente purchè si tratti di leggere o scrivere un file di testo, mentre è necessario poter caricare o scaricare files di qualsiasi tipo (pdf, doc, xls ecc). Sono abbastanza sicuro di dover usare l'oggetto stream, così come si fa con i db di sql/mysql tanto per capire, ma non ho capito se e come utilizzarlo con il "task" di ritorno

    grazie davvero per l'aiuto prezioso, e alla fine renderò disponibile l'intera soluzione di test così altri ne potranno beneficiare


    DOWNLOAD
      Private Async Sub Cmd_DOWNLOAD_Click(sender As Object, e As EventArgs) Handles Cmd_DOWNLOAD.Click
    
        Dim TmpTOKEN As String = Txt_TOKEN.Text
    
        Dim folder As String = ""
        Dim file As String = "Lorem ipsum.txt"
    
        Txt_RESULT.Text = $"Download di {folder}/{file} in corso..." & vbCrLf
    
        Using dbx = New DropboxClient(TmpTOKEN)
          Using response = Await dbx.Files.DownloadAsync(folder & "/" & file)
            Txt_RESULT.AppendText(Await response.GetContentAsStringAsync() & vbCrLf)
          End Using
        End Using
    
        Txt_RESULT.AppendText("Completato" & vbCrLf)
    
      End Sub
    
    UPLOAD
      Private Async Sub Cmd_UPLOAD_Click(sender As Object, e As EventArgs) Handles Cmd_UPLOAD.Click
    
        Dim TmpTOKEN As String = Txt_TOKEN.Text
    
        Dim folder As String = ""
        Dim file As String = "Lorem ipsum.txt"
        Dim content As String = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut ac quam vitae enim vehicula pellentesque eget ut felis. Nullam pretium magna vitae erat fringilla pharetra. Morbi sagittis tristique fermentum. Morbi gravida turpis non elit commodo ultricies. Nullam non suscipit tellus, ut lobortis urna. Morbi a ante non tortor suscipit lacinia. Ut non elit at dui placerat aliquam non in lacus. Donec urna massa, condimentum at congue non, aliquet sed ligula. Aenean quis egestas orci. Nullam convallis semper massa, ac mollis purus interdum vulputate. Fusce fringilla massa risus, non laoreet nunc interdum at. Vestibulum consequat, dui id hendrerit mollis, elit ante aliquam ante, at ultrices odio dolor ut tortor. Fusce tincidunt risus augue, id consectetur urna feugiat et. Vivamus auctor ipsum magna, eget dictum ex molestie non. Cras in mi mollis, efficitur arcu quis, hendrerit velit."
    
        Txt_RESULT.Text = $"Upload di {folder}/{file} in corso..." & vbCrLf
    
        Using dbx = New DropboxClient(TmpTOKEN)
          Using mem = New MemoryStream(Encoding.UTF8.GetBytes(content))
            Dim updated = Await dbx.Files.UploadAsync(folder & "/" & file, WriteMode.Overwrite.Instance, body:=mem)
            Txt_RESULT.AppendText($"folder : {folder}" & vbCrLf)
            Txt_RESULT.AppendText($"file : {file}" & vbCrLf)
            Txt_RESULT.AppendText($"rev : {updated.Rev}" & vbCrLf)
          End Using
        End Using
    
    
        Txt_RESULT.AppendText("Completato" & vbCrLf)
    
      End Sub
    
  • Re: Utilizzare dropbox con vb.net

    Per l'upload di file binari ci sono riuscito, era abbastanza semplice
    
        Dim bytes = My.Computer.FileSystem.ReadAllBytes("C:\miofile.pdf")
        Using dbx = New DropboxClient(TmpTOKEN)
          Using mem = New MemoryStream(bytes) ' Encoding.UTF8.GetBytes(content))
            Dim updated = Await dbx.Files.UploadAsync(folder & "/" & file, WriteMode.Overwrite.Instance, body:=mem)
          End Using
        End Using
    
    ora devo capire x il download
  • Re: Utilizzare dropbox con vb.net

    E' bello perché faccio le domande e mi rispondo da solo ma in questi giorni di segregazione ci sta dai ...
    alla fine ho capito anche come scaricare un file binario, era altrettanto semplice
    
    Dim localFile As String = "D:\aggancio\_DB\miofile.pdf"
        Using dbx = New DropboxClient(TmpTOKEN)
          Using response = Await dbx.Files.DownloadAsync(folder & "/" & file)
            Dim CustomerData = Await response.GetContentAsByteArrayAsync()
            My.Computer.FileSystem.WriteAllBytes(localFile, CustomerData, True)
          End Using
        End Using
    
Devi accedere o registrarti per scrivere nel forum
10 risposte