SharePoint : copia file su PC e viceversa

di il
18 risposte

SharePoint : copia file su PC e viceversa

Buongiorno, premetto che non sono un programmatore. Ho sviluppato un semplice programma VB dove all'interno del quale ci sono anche dei Buttons.

Questi Buttons non fanno altre che copiare dei file dal PC sul quale è installato il software che ho creato ad un altro PC in rete che fa da Server e viceversa.

La sintassi che ho usato è grossomodo questa (e funziona) :



    Private Sub btnImportaFile_Click(sender As Object, e As EventArgs) Handles btnImportaFile.Click

        If (MessageBox.Show("Ciao, vuoi importare il File? ", "Copia File", MessageBoxButtons.YesNo, MessageBoxIcon.Information) = Windows.Forms.DialogResult.Yes) Then

            Dim origine As String

            Dim destinazione As String

            origine = IndirizzoServer & ":\Area Share\Test.txt"

            destinazione = "C:\Prova\Test.txt"

            If IO.File.Exists(origine) = True Then

                My.Computer.FileSystem.CopyFile(origine, destinazione, True)                

                CreateObject("WScript.Shell").Popup("File Test trovato.... In scaricamento", 1, "Copia File")

            Else

                MessageBox.Show("File Test non trovato o collegamento al Server non effettuato, verificare il collegamento di rete", "", MessageBoxButtons.OK, MessageBoxIcon.Error)

            End If          

      End Sub



Funziona anche nel caso inverto Origine e Destinazione (cioè da PC copio su Server).

Ora mi viene vorrei fare la stessa cosa su un sito SharePoint (dove io ho permessi di scrittura naturalmente). Ho provato semplicemente mettendo l'indirizzo della cartella SharePoint al posto di una variabile Origine o Destinazione ma non funziona. Occorre utilizzare un altro tipo di istruzione o devo magari fare qualche modifica sul sito SharePoint?

Ringrazio per la collaborazione.

Cordiali Saluti.

Stevign

18 Risposte

  • Re: SharePoint : copia file su PC e viceversa

    Quella è una copia di file. Devi avere un indirizzo di uno share su cui poter scrivere a partire dal nome del server.
  • Re: SharePoint : copia file su PC e viceversa

    oregon ha scritto:


    Quella è una copia di file. Devi avere un indirizzo di uno share su cui poter scrivere a partire dal nome del server.
    Ciao, si io dovrei fare una copia di File ( a dir la verità poi mi servirebbe addirittura copiare un'intera cartella composta a sua volta da più file e cartelle.. ma facciamo un passo alla volta) . Io, su SharePoint, ho creato una cartella(CartellaProva) ed ho il suo indirizzo che è questo (facendo il classico TastoDX Copia Collegamento) :

    (xxxx non è reale, l'ho usato qui per non scrivere l'indirizzo corretto e _ l'ho inserito per rendere visibili qui sul forum tutto il nome del collegamento. I caratteri dopo CartelleProva non so da dove escono... )


    "_https://xxxxxxx.sharepoint.com/:f:/r/sites/FSRE0080/xxxxxxxx/Documents/CartellaProva?csf=1&web=1&e=i9f8UI"

    a questo indirizzo ho poi aggiunto come prima \test.txt sostituendo quindi la variabile "origine" in questo modo :
    
    origine = "https://xxxxxxx.sharepoint.com/:f:/r/sites/FSRE0080/xxxxxxxx/Documents/CartellaProva?csf=1&web=1&e=i9f8UI\Test.txt"
    

    ma mi esce questo errore (una volta installato il programma che ho creato) :

    Le informazioni su come richiamare il debug JIT (Just-In-Time) anziché questa finestra

    sono riportate in fondo al messaggio.



    ************** Testo dell'eccezione **************

    System.ArgumentException: Caratteri non validi nel percorso.

    in System.Security.Permissions.FileIOPermission.EmulateFileIOPermissionChecks(String fullPath)

    in System.Security.Permissions.FileIOPermission.QuickDemand(FileIOPermissionAccess access, String fullPath, Boolean checkForDuplicates, Boolean needFullPath)

    in Microsoft.VisualBasic.FileIO.FileSystem.NormalizePath(String Path)

    in Microsoft.VisualBasic.FileIO.FileSystem.NormalizeFilePath(String Path, String ParamName)

    in Microsoft.VisualBasic.FileIO.FileSystem.CopyOrMoveFile(CopyOrMove operation, String sourceFileName, String destinationFileName, Boolean overwrite, UIOptionInternal showUI, UICancelOption onUserCancel)

    in Copia_Memo.Form1.btnOpzione1_Click(Object sender, EventArgs e)

    in System.Windows.Forms.Control.OnClick(EventArgs e)

    in System.Windows.Forms.Button.OnClick(EventArgs e)

    in System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)

    in System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)

    in System.Windows.Forms.Control.WndProc(Message& m)

    in System.Windows.Forms.ButtonBase.WndProc(Message& m)

    in System.Windows.Forms.Button.WndProc(Message& m)

    in System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)

    in System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)

    in System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)





    ************** Assembly caricati **************

    mscorlib

    Versione assembly: 4.0.0.0

    Versione Win32: 4.8.4240.0 built by: NET48REL1LAST_B

    Base di codice: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll

    ----------------------------------------

    Copia_Memo

    Versione assembly: 1.0.0.0

    Versione Win32: 1.0.0.0

    Base di codice: file:///C:/Program%20Files%20(x86)/Stevign76/Schiurtar%C3%B2l/Copia_Memo.exe

    ----------------------------------------

    Microsoft.VisualBasic

    Versione assembly: 10.0.0.0

    Versione Win32: 14.8.3761.0 built by: NET48REL1

    Base di codice: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/Microsoft.VisualBasic/v4.0_10.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll

    ----------------------------------------

    System

    Versione assembly: 4.0.0.0

    Versione Win32: 4.8.4210.0 built by: NET48REL1LAST_B

    Base di codice: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll

    ----------------------------------------

    System.Core

    Versione assembly: 4.0.0.0

    Versione Win32: 4.8.4240.0 built by: NET48REL1LAST_B

    Base di codice: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll

    ----------------------------------------

    System.Windows.Forms

    Versione assembly: 4.0.0.0

    Versione Win32: 4.8.4210.0 built by: NET48REL1LAST_B

    Base di codice: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll

    ----------------------------------------

    System.Drawing

    Versione assembly: 4.0.0.0

    Versione Win32: 4.8.3761.0 built by: NET48REL1

    Base di codice: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll

    ----------------------------------------

    System.Configuration

    Versione assembly: 4.0.0.0

    Versione Win32: 4.8.4190.0 built by: NET48REL1LAST_B

    Base di codice: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll

    ----------------------------------------

    System.Xml

    Versione assembly: 4.0.0.0

    Versione Win32: 4.8.3761.0 built by: NET48REL1

    Base di codice: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll

    ----------------------------------------

    System.Runtime.Remoting

    Versione assembly: 4.0.0.0

    Versione Win32: 4.8.3761.0 built by: NET48REL1

    Base di codice: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Runtime.Remoting/v4.0_4.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll

    ----------------------------------------

    mscorlib.resources

    Versione assembly: 4.0.0.0

    Versione Win32: 4.7.3062.0 built by: NET472REL1

    Base di codice: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_it_b77a5c561934e089/mscorlib.resources.dll

    ----------------------------------------

    System.Windows.Forms.resources

    Versione assembly: 4.0.0.0

    Versione Win32: 4.7.3062.0 built by: NET472REL1

    Base di codice: file:///C:/WINDOWS/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_it_b77a5c561934e089/System.Windows.Forms.resources.dll

    ----------------------------------------



    ************** Debug JIT **************

    Per abilitare il debug JIT, è necessario impostare il valore

    jitDebugging nella sezione system.windows.forms del file di configurazione

    dell'applicazione o del computer (machine.config).

    L'applicazione inoltre deve essere compilata con il debug

    abilitato.



    Ad esempio:



    <configuration>

    <system.windows.forms jitDebugging="true" />

    </configuration>



    Quando il debug JIT è abilitato, tutte le eccezioni non gestite

    vengono inviate al debugger JIT registrato nel computer,

    anziché essere gestite da questa finestra di dialogo.


    Probabilmente non è così semplice come la pensavo ( da ignorante in materia).
  • Re: SharePoint : copia file su PC e viceversa

    oregon ha scritto:


    Quella è una copia di file. Devi avere un indirizzo di uno share su cui poter scrivere a partire dal nome del server.

    Ciao, invece da Debug Visual Studio esce questo errore :

    System.ArgumentException
    HResult=0x80070057
    Messaggio=Caratteri non validi nel percorso.
    Origine=mscorlib
    Analisi dello stack:
    in System.Security.Permissions.FileIOPermission.EmulateFileIOPermissionChecks(String fullPath)
    in System.Security.Permissions.FileIOPermission.QuickDemand(FileIOPermissionAccess access, String fullPath, Boolean checkForDuplicates, Boolean needFullPath)
    in Microsoft.VisualBasic.FileIO.FileSystem.NormalizePath(String Path)
    in Microsoft.VisualBasic.FileIO.FileSystem.NormalizeFilePath(String Path, String ParamName)
    in Microsoft.VisualBasic.FileIO.FileSystem.CopyOrMoveFile(CopyOrMove operation, String sourceFileName, String destinationFileName, Boolean overwrite, UIOptionInternal showUI, UICancelOption onUserCancel)
    in Copia_Memo.Form1.btnOpzione1_Click(Object sender, EventArgs e)
    in System.Windows.Forms.Control.OnClick(EventArgs e)
    in System.Windows.Forms.Button.OnClick(EventArgs e)
    in System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
    in System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
    in System.Windows.Forms.Control.WndProc(Message& m)
    in System.Windows.Forms.ButtonBase.WndProc(Message& m)
    in System.Windows.Forms.Button.WndProc(Message& m)
    in System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
    in System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
    in System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
    in System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
    in System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
    in System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
    in System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
    in Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
    in Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
    in Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
    in Copia_Memo.My.MyApplication.Main(String[] Args)

    Questa eccezione è stata generata in origine nello stack di chiamate seguente:
    [Codice esterno]



    L'unica cosa che ho capito è " Messaggio=Caratteri non validi nel percorso." , il resto è Arabo per me , però non capisco quali caratteri non sono validi, io ho semplicemente fatto un Copia/Incolla.


    Se tolgo i caratteri dopo CartellaProva faccio un passettino avanti ma non va ugualmente, l'errore diventa questo :

    System.NotSupportedException: 'Il formato del percorso specificato non è supportato.'

    Grazie.

    Stevign
  • Re: SharePoint : copia file su PC e viceversa

    Non puoi usare una url https come percorso di un file.

    Deve essere del tipo

    \\nomeserver\nomeshare\cartella\file.txt
  • Re: SharePoint : copia file su PC e viceversa

    oregon ha scritto:


    Non puoi usare una url https come percorso di un file.

    Deve essere del tipo

    \\nomeserver\nomeshare\cartella\file.txt
    ah ok, eh si vede che sono ignorante in materia....

    Con CopiaIncolla mi esce questo ( a parte il carattere _ ) :

    _https://xxxxxxx.sharepoint.com/:f:/r/sites/FSRE0080/xxxxxxxx/Documents/CartellaProva?csf=1&web=1&e=i9f8UI

    che quindi alla fine dovrebbe diventare così la mia variabile :

    origine = "\\xxxxxxx.sharepoint.com\:f:\r\sites\FSRE0080\xxxxxxxx\Documents\CartellaProvaI\Test.txt"


    Ho tolto ?csf=1&web=1&e=i9f8U prechè me li indica come caratteri non validi

    E' corretto ?

    Mi da questo errore :

    System.NotSupportedException: 'Il formato del percorso specificato non è supportato.'
  • Re: SharePoint : copia file su PC e viceversa

    Capiamoci ... se il sistema server è remoto (su internet) NON potrai usare il tuo codice con la CopyFile in nessun caso.

    Semmai devi capire se i file sono aggiornabili via FTP.
  • Re: SharePoint : copia file su PC e viceversa

    oregon ha scritto:


    Capiamoci ... se il sistema server è remoto (su internet) NON potrai usare il tuo codice con la CopyFile in nessun caso.

    Semmai devi capire se i file sono aggiornabili via FTP.
    Ciao, grazie ancora per il tuo interessamento.
    Sinceramente non so come funzionano i "siti" di Share Point di Microsoft ( e OneDrive), pensavo era più semplice, che magari "lo vedeva" come un normalissimo server, invece la cosa mi sembra più complicata.

    Se su una sessione di Explorer ( quella classica di Esplora Risorse di Windows) digito questo Indirizzo :

    //xxxx.sharepoint.com/sites/xxxx/xxxxx/Documents/CartellaProva


    mi si apre una pagina Internet di SharePoint dentro alla mia cartella, se però lo stesso indirizzo lo uso sul programmino che sto facendo mi dice "indirizzo inesistente"..


    boh, farò ancora un po' di tentativi

    Grazie.

    Stevign
  • Re: SharePoint : copia file su PC e viceversa

    La pagina internet si apre sul browser con il protocollo http. Altra cosa è copiare dentro un file con un FileCopy. Non lo puoi fare.

    Ripeto. Controlla se il tuo sito è accessibile via FTP
  • Re: SharePoint : copia file su PC e viceversa

    oregon ha scritto:


    La pagina internet si apre sul browser con il protocollo http. Altra cosa è copiare dentro un file con un FileCopy. Non lo puoi fare.

    Ripeto. Controlla se il tuo sito è accessibile via FTP
    Ciao, purtroppo non so se è lo è , ho provato a cercare ma non trovo informazioni in merito

    Ora ho provato con My.Computer.Network.UploadFile , ma pur indicando l'username e la password mi restituisce errore 403 Non consentito.


    Mi sa che abbandonerò del tutto il progetto e pazienza anche se mi sembra strano che con Visual Basic (quindi Microsoft) non si riesca a creare qualcosa per caricare dei file ,o cartelle, su SharePoint o OneDrive (Microsoft anch'essi).

    Proverò a sbatterci su ancora un po' la testa e se combino qualcosa di buono vi faccio sapere .
    Ciao, grazie.

    Stevign
  • Re: SharePoint : copia file su PC e viceversa

    Non è che essendo prodotti Microsoft devono dialogare come vuoi tu. C'è di mezzo Internet che obbliga ad usare appositi metodi e protocolli.

    In pratica, quando tu devi pubblicare qualche file sul sito, come fai "a mano"? Hai una console di controllo?
  • Re: SharePoint : copia file su PC e viceversa

    stevign76 ha scritto:


    Mi sa che abbandonerò del tutto il progetto e pazienza anche se mi sembra strano che con Visual Basic (quindi Microsoft) non si riesca a creare qualcosa per caricare dei file ,o cartelle, su SharePoint o OneDrive (Microsoft anch'essi).
    Certo che c'è il modo di caricare file o cartelle, ma copiarli su una directory locale non è la stessa cosa che pubblicarli su un sito Web: come ti è stato già detto, i protocolli sono differenti, poiché in un caso usi le funzioni API native di gestione del file system, mentre nell'altro devi interfacciarti a una REST API invocabile tramite HTTP e chiamare specifici endpoint documentati passando le informazioni richieste per eseguire l'operazione desiderata.

    Ovviamente, l'API da utilizzare e anche il suo modo di impiego cambiano a seconda del servizio di riferimento.

    Ad esempio, per SharePoint puoi provare a partire da questa documentazione.

    Ciao!
  • Re: SharePoint : copia file su PC e viceversa

    oregon ha scritto:


    Non è che essendo prodotti Microsoft devono dialogare come vuoi tu. C'è di mezzo Internet che obbliga ad usare appositi metodi e protocolli.

    In pratica, quando tu devi pubblicare qualche file sul sito, come fai "a mano"? Hai una console di controllo?
    Ciao, Il programma che stavo cercando di sviluppare è in realtà un po' più complesso ( fa un controllo dell'utente collegato al PC ed in base a quello abilita o disabilita alcune funzioni del programma , fa alcuni test di ping verso altri server, ci sono collegamenti verso altri Software ,ed altre funzioni, etc etc ) ,sono riuscito a portarlo abbastanza a termine, mi manca appunto solo quest'ultima modifica da integrare (modificare il fatto di usare un Server ed usare invece SharePoint o OneDrive al suo posto).
    Siamo circa 5 o 6 persone (ognuna con il proprio PC) che si collega a questo server per lavorare con dei file (naturalmente solo il primo che si collega a questi file può lavorare in modifica, gli altri solo in lettura ma anzi va bene ed è giusto così) , si tratta per lo più di file Excel. Avevo pensato di utilizzarli direttamente da SharePoint (o OneDrive) ma ho notato che le macro non funzionano, quindi per ora dobbiamo ancora usare il Server come appoggio . L'alternativa che avevo pensato è stata quella di copiare i file sui PC locali (tramite appunto un button) e ricopiarli su SharePoint ( o OneDrive) nel momento in cui ci serve appunto aggiornarli anche lì ( stimato ogni 3 o 4 ore circa) . Non so se sono riuscito a spiegarmi del tutto.. .

    Le sto provando di tutte ma non ho molte basi di programmazione... anzi direi che sono piuttosto scarsetto ..

    Riassumendo in breve avrei la necessità di creare dei Button che mi permettano di scaricare, e ricaricare, dei file su SharePoint (o in alternativa OneDrive) senza più utilizzare quindi il PC che fa da Server.

    A proposito di OneDrive, avevo anche pensato di installare OneDrive sul PC che fa da Server e mettere la sincronizzazione automatica sulla parte WEB (che mi farebbe quindi da BackUp), però sarei sempre comunque legato al fatto di utilizzare anche il Server.

    Grazie ancora per la disponibilità nel rispondermi.

    Ciao.

    Stevign
  • Re: SharePoint : copia file su PC e viceversa

    Alka ha scritto:


    stevign76 ha scritto:


    Mi sa che abbandonerò del tutto il progetto e pazienza anche se mi sembra strano che con Visual Basic (quindi Microsoft) non si riesca a creare qualcosa per caricare dei file ,o cartelle, su SharePoint o OneDrive (Microsoft anch'essi).
    Certo che c'è il modo di caricare file o cartelle, ma copiarli su una directory locale non è la stessa cosa che pubblicarli su un sito Web: come ti è stato già detto, i protocolli sono differenti, poiché in un caso usi le funzioni API native di gestione del file system, mentre nell'altro devi interfacciarti a una REST API invocabile tramite HTTP e chiamare specifici endpoint documentati passando le informazioni richieste per eseguire l'operazione desiderata.

    Ovviamente, l'API da utilizzare e anche il suo modo di impiego cambiano a seconda del servizio di riferimento.

    Ad esempio, per SharePoint puoi provare a partire da questa documentazione.

    Ciao!
    Ciao, grazie mille , ho provato a guardare un po' ma ci ho capito poco, purtroppo non conosco la programmazione in modo così approfondito. Tempo fa quando ero riuscito a scrivere il codice per salvare i file dal server al PC mi sembrava già di esser andato sulla luna . Gli articoli che ho "letto" sono in Inglese ed io lo mastico pochissimo e purtroppo gli esempi accennati mi è parso di capire siano in C#. Vedo se riesco a tradurre l'articolo ma la vedo dura.
    Grazie ancora , ciao.


    Stevign
  • Re: SharePoint : copia file su PC e viceversa

    Ciao ragazzi, scusate il tremendo ritardo ma ci tenevo a dirvi come ho "risolto" .
    Dal sito Share Point sono riuscito a fare in modo che gli utenti abilitati a questo sito abbiano la possibilità di sincronizzare (sul proprio pc) le cartelle del sito Share point, così praticamente ogni utente "vedi i file/cartelle " come se fossero sul proprio PC, una sorta di One Drive condiviso .
    Grazie comunque per l'interessamento che mi avete dimostrato e i consigli. Buona giornata.
    Ciao.
Devi accedere o registrarti per scrivere nel forum
18 risposte