\ DriveHQ Customer Support Forum \
Leggi/Rispondi : 103551/7
  • DriveHQSupport_
  • (676post)
Esempio di codice client FTP (codice sorgente C#): connessione al server FTP di DriveHQ

Molti utenti ci hanno chiesto come connettersi al server FTP di DriveHQ nei propri progetti software. In questo messaggio, vorremmo innanzitutto fornire alcune informazioni generali su FTP, seguite da del codice sorgente in C#.

DriveHQ offre un servizio di hosting server FTP. Supportiamo i protocolli FTP e FTPS standard. Uno dei principali vantaggi del nostro servizio FTP è: è perfettamente integrato con i nostri ampi servizi IT cloud. Gli utenti possono accedere ai propri file FTP tramite browser web, unità mappata (WebDAV) oppure tramite il software client DriveHQ FileManager. Possono anche utilizzare il nostro strumento di amministrazione di gruppo basato sul web per creare e gestire utenti FTP (sottoutenti).

Il protocollo FTP standard è considerato insicuro in quanto trasmette i dati senza crittografia. Per una maggiore sicurezza SSL, è possibile utilizzare FTPS (FTP su SSL/TLS). Esistono due metodi per attivare la sicurezza SSL:

Implicito: Il client FTP si connette direttamente a una porta FTPS dedicata (quella predefinita è la 990);

Esplicito (FTPES): Il client FTP si connette alla porta FTP standard numero 21 e quindi invia il comando STARTTLS per aumentare il livello di sicurezza.

Il server FTP di DriveHQ supporta sia FTPS che FTPES. La maggior parte delle applicazioni client FTP supportano entrambi i protocolli, ad esempio FileZilla, CuteFTP, WsFTP, SmartFTP, WinSCP e Fetch, ecc.

Esiste un altro protocollo di trasferimento file sicuro chiamato SFTP, che viene spesso confuso con "Secure FTP"; in realtà, SFTP sta per "SSH File Transfer Protocol", un protocollo di trasferimento file completamente diverso. Dal punto di vista della sicurezza, SSL/TLS e SSH sono pressoché identici. Chiaramente, SSL/TLS è più diffuso di SSH. Il server FTP di DriveHQ non supporta SFTP in quanto non ne riscontriamo una forte necessità.

Modalità FTP attiva e passiva:

Una connessione FTP può includere due connessioni TCP (canali): il canale di comando e il canale dati. Il canale di comando viene utilizzato per inviare comandi FTP, mentre il canale dati viene utilizzato per trasferire grandi quantità di dati. La modalità FTP attiva richiede che il server FTP si connetta al client FTP per stabilire la connessione dati. Questa modalità è spesso considerata insicura e viene bloccata da molti firewall/router. La modalità FTP passiva richiede che il client FTP si connetta al server FTP su una porta diversa. È considerata sicura e raramente viene bloccata. Il server FTP di DriveHQ supporta sia la modalità FTP attiva che quella passiva. Tuttavia, se il router/firewall o il software di sicurezza bloccano la modalità FTP attiva, questa non funzionerà. È interessante notare che la maggior parte dei router moderni supporta la modalità FTP attiva.

Nota bene: il client FTP da riga di comando di Microsoft non supporta l'FTP passivo. Quasi tutti gli altri programmi client FTP supportano sia l'FTP attivo che quello passivo.

FTP e ProFTP

DriveHQ dispone di due siti FTP: uno è ftp.drivehq.com, accessibile a tutti gli utenti; l'altro è proftp.drivehq.com, disponibile solo per gli abbonati a pagamento (inclusi i sottoutenti di un account di gruppo a pagamento). Poiché proftp.drivehq.com è disponibile solo per gli abbonati a pagamento, non supporta l'FTP anonimo. Per ulteriori informazioni sul nostro servizio di hosting server FTP, visitare:

http://www.drivehq.com/servicemanual.aspx#_Toc265186728

 

Esempio di codice sorgente di un client FTP

Il seguente codice sorgente C# viene fornito così com'è, senza alcun supporto. Siete liberi di utilizzarlo nel vostro software o di ridistribuirlo. Il codice di esempio mostra come connettersi al nostro server FTP ed eseguire comandi FTP, come LIST, GET e PUT; potete anche vedere come configurarlo per utilizzare FTP passivo e SSL.


utilizzando il sistema;
Utilizzo di System.Collections.Generic;
Utilizzo di System.Linq;
utilizzando System.Text;
Utilizzo di System.Threading.Tasks;
utilizzando System.Net;
Utilizzo di System.IO;
Utilizzo di System.Security.Cryptography.X509Certificates;

///
/// Copyright (c) 2003-2016, Drive Headquarters, Inc. 
/// 
/// Il codice di esempio del client FTP mostra come connettersi al server FTP di DriveHQ utilizzando C#.
/// Puoi utilizzare il codice o ridistribuirlo gratuitamente. Il codice è fornito COSÌ COM'È senza 
/// nessun supporto o garanzia. DriveHQ non si assume alcuna responsabilità derivante dall'utilizzo del codice.
///
namespace FTPClientSample
{
    Programma del corso
    {
        static string ftpServer = "ftp.drivehq.com"; // Puoi anche usare ftp.drivehq.com se hai un account a pagamento.
        static string username = "YOUR_USERNAME"; // Il tuo nome utente di DriveHQ
        static string password = "YOUR_PASSWORD"; // La tua password di DriveHQ
        static void Main(string[] args)
        {
            // Elenca una cartella sul server FTP
            //Lista("/"); 

            // Scaricare un file dal server FTP
            //DownloadFile("ServerFileName.jpg", @"c:\temp\ClientFileName.jpg");

            // Carica un file sul server FTP
            UploadFile(@"c:\temp\ClientFileName.jpg", "/temp/ServerFileName.jpg");
        }


        ///
        /// Carica un file sul server FTP.
        ///
        /// un percorso di file locale
        /// il percorso sul server FTP, ad esempio /temp/filename
        ///
        public static bool UploadFile(string srcFilePath, string destFilePath = null)
        {
            se (Stringa.ÈNullaOSpazioBianco(percorsoFileSrc))
                genera una nuova ArgumentNullException("Percorso del file sorgente.");

            se (Stringa.ÈNulloOSpazioBianco(percorsoFileDestinazione))
                destFilePath = Path.GetFileName(srcFilePath);

            Uri serverUri = GetUri(destFilePath);

            // L'URI del server dovrebbe iniziare con lo schema ftp://.
            se (serverUri.Scheme != Uri.UriSchemeFtp)
                restituire falso;

            Richiesta FtpWebRequest = CreateFtpRequest(serverUri, WebRequestMethods.Ftp.UploadFile);

            // leggere il contenuto del file in un array di byte
            FileStream sourceStream = new FileStream(srcFilePath, FileMode.Open, FileAccess.Read);
            byte[] fileContent = nuovo byte[sourceStream.Length];
            sourceStream.Read(fileContent, 0, fileContent.Length);
            sourceStream.Close();

            // inviare il contenuto del file al server FTP
            request.ContentLength = fileContent.Length;
            Stream requestStream = request.GetRequestStream();
            requestStream.Write(fileContent, 0, fileContent.Length);
            requestStream.Close();

            FtpWebResponse response = (FtpWebResponse)request.GetResponse();
            Console.WriteLine("Stato della risposta: {0} - {1}", response.StatusCode, response.StatusDescription);

            restituisci vero;
        }

        ///
        /// Scarica il file specificato nel percorso srcFilePath dal server FTP nella cartella specificata nel percorso destFilePath. Se il file è nullo, salvalo nella cartella corrente.
        ///
        ///
        ///
        ///
        public static bool DownloadFile(string srcFilePath, string destFilePath = null)
        {
            se (Stringa.ÈNullaOSpazioBianco(percorsoFileSrc))
                genera una nuova ArgumentNullException("Percorso del file sorgente.");

            se (Stringa.ÈNulloOSpazioBianco(percorsoFileDestinazione))
                destFilePath = Path.GetFileName(srcFilePath);

            Uri serverUri = GetUri(srcFilePath);

            //// L'URI del server dovrebbe iniziare con lo schema ftp://.
            se (serverUri.Scheme != Uri.UriSchemeFtp)
                restituire falso;

            Richiesta FtpWebRequest = CreateFtpRequest(serverUri, WebRequestMethods.Ftp.DownloadFile);

            FtpWebResponse response = (FtpWebResponse)request.GetResponse();
            Stream responseStream = response.GetResponseStream();

            FileStream fileStream = new FileStream(destFilePath, FileMode.OpenOrCreate, FileAccess.Write);

            byte[] buffer = nuovo byte[32 * 1024];

            mentre(vero) {
                int bytesRead = responseStream.Read(buffer, 0, buffer.Length);
                se (bytesRead == 0)
                    rottura;

                fileStream.Write(buffer, 0, bytesRead);
            }
            fileStream.Close();

            Console.WriteLine("Stato della risposta: {0} - {1}", response.StatusCode, response.StatusDescription);

            restituisci vero;
        }

        ///
        /// Elenca il contenuto di una cartella FTP
        ///
        ///
        ///
        pubblico statico stringa List(string path)
        {

            Uri serverUri = GetUri(path);

            //// L'URI del server dovrebbe iniziare con lo schema ftp://.
            se (serverUri.Scheme != Uri.UriSchemeFtp)
                ritorno ""; 

            Richiesta FtpWebRequest = CreateFtpRequest(serverUri, WebRequestMethods.Ftp.ListDirectory);

            FtpWebResponse response = (FtpWebResponse)request.GetResponse();
            StreamReader sr = new StreamReader(response.GetResponseStream());
            string risultato = sr.ReadToEnd();
            Console.WriteLine("Stato della risposta: {0} - {1}", response.StatusCode, response.StatusDescription + "\r\n" + risultato);

            restituisci il risultato;
        }

        private static FtpWebRequest CreateFtpRequest(Uri serverUri, string method)
        {
            Richiesta FtpWebRequest = (FtpWebRequest)WebRequest.Create(serverUri);
            richiesta.AbilitaSSL = vero;
            richiesta.UsaPassivo = vero;
            richiesta.UsaBinario = vero;
            richiesta.KeepAlive = true;
            request.Credentials = new NetworkCredential(username, password);
            richiesta.Metodo = metodo;

            richiesta di ritorno;
        }

        private static Uri GetUri(string remoteFilePath)
        {
            Uri ftpServerUri = new Uri("ftp://" + ftpServer);
            restituisci un nuovo Uri(ftpServerUri, remoteFilePath);
        }

    }
}
 

10/05/2016 19:01:04

  • ajayreigns
  • (1post)
Soggetto: Ho bisogno di codice VB.NET per connettermi all'account PRO di DriveHQ
Ho bisogno di codice VB.NET per connettermi all'account PRO di DriveHQ

Si prega di condividere il codice Visual Basic .NET per connettere l'account PRO Drive HQ


Rispondere
19/11/2016 00:25:49

  • arsene16pcs017
  • (1post)
Soggetto: Oggetto: Esempio di codice client FTP (codice sorgente C#): connessione al serve...
Oggetto: Esempio di codice client FTP (codice sorgente C#): connessione al server FTP di DriveHQ

 Ciao! Ho progettato il mio progetto web. Vorrei sapere come condividere i miei file (testi, video, audio) sul cloud in modo che siano accessibili ad altri. Mi servono anche le istruzioni e i codici per caricare e scaricare i file su DriveHQ. Grazie


Rispondere
15/01/2018 22:32:28

  • DriveHQSupport_
  • (676post)
Soggetto: Oggetto: Re: Codice di esempio del client FTP (codice sorgente C#): connessione ...

Utente: arsene16pcs017  -  15/01/2018 22:32:28

Oggetto: Esempio di codice client FTP (codice sorgente C#): connessione al server FTP di DriveHQ

 Ciao! Ho progettato il mio progetto web. Vorrei sapere come condividere i miei file (testi, video, audio) sul cloud in modo che siano accessibili ad altri. Mi servono anche le istruzioni e i codici per caricare e scaricare i file su DriveHQ. Grazie

Oggetto: Re: Codice di esempio del client FTP (codice sorgente C#): connessione al server FTP di DriveHQ

Grazie per averci contattato. 

Dovresti trovare le risposte a tutte le domande di base sulla condivisione e la pubblicazione nel nostro manuale di servizio: https://www.drivehq.com/ServiceManual.aspx. Se avete domande specifiche, inviate un'e-mail support@drivehq.com e faremo del nostro meglio per aiutarvi. 

 

Grazie,
Supporto DriveHQ


 


Rispondere
16/01/2018 08:32:57

  • glorber
  • (1post)
Soggetto: Oggetto: Esempio di codice client FTP (codice sorgente C#): connessione al serve...
Oggetto: Esempio di codice client FTP (codice sorgente C#): connessione al server FTP di DriveHQ

Sto sviluppando un'applicazione iOS utilizzando Swift. L'applicazione genera un file di dati JSON che vorrei caricare e scaricare dall'applicazione a DriveHQ e viceversa.

Potresti condividere un esempio di codice Swift per la connessione al server FTP di DriveHQ?

Grazie.


Rispondere
22/09/2018 06:59:05

  • stleojohn
  • (1post)
Soggetto: Oggetto: Esempio di codice client FTP (codice sorgente C#): connessione al serve...
Oggetto: Esempio di codice client FTP (codice sorgente C#): connessione al server FTP di DriveHQ

 Ricevo un errore di eccezione sconosciuto quando provo questo codice, per favore aiutatemi


Rispondere
26/11/2019 20:42:14

  • DriveHQ Support
  • (32post)
Soggetto: Oggetto: Re: Codice di esempio del client FTP (codice sorgente C#): connessione ...

Utente: stleojohn  -  26/11/2019 20:42:14

Oggetto: Esempio di codice client FTP (codice sorgente C#): connessione al server FTP di DriveHQ

 Ricevo un errore di eccezione sconosciuto quando provo questo codice, per favore aiutatemi

Oggetto: Re: Codice di esempio del client FTP (codice sorgente C#): connessione al server FTP di DriveHQ

Si prega di pubblicare il frammento di codice e il messaggio di eccezione. Si prega inoltre di testarlo su FileZilla per assicurarsi che la rete non blocchi la connessione FTP.


Rispondere
26/11/2019 21:32:26

  • liveieee
  • (2post)
Soggetto: Programma client FTP in Python
Programma client FTP in Python

Potresti per favore condividere la versione Python di DriveHQ


Rispondere
31/12/2019 04:28:41

Aggiungi ai segnalibri e condividi
Rispondi rapidamente

Leading Cloud Surveillance service

Leading Enterprise Cloud IT Service Since 2003