\ DriveHQ Customer Support Forum \
Lezen/Beantwoorden : 103414/7
  • DriveHQSupport_
  • (676berichten)
Voorbeeldcode voor een FTP-client (C#-broncode): verbinding maken met de FTP-server van DriveHQ

Veel gebruikers hebben gevraagd hoe ze in hun eigen softwareprojecten verbinding kunnen maken met de FTP-server van DriveHQ. In dit bericht willen we eerst wat algemene informatie over FTP geven, gevolgd door een aantal C#-broncodevoorbeelden.

DriveHQ biedt FTP-serverhosting aan. We ondersteunen de gangbare FTP- en FTPS-protocollen. Een van de belangrijkste voordelen van onze FTP-service is de naadloze integratie met onze uitgebreide cloud-IT-diensten. Gebruikers hebben via een webbrowser toegang tot hun FTP-bestanden. toegewezen schijf (WebDAV) of de DriveHQ FileManager clientsoftware. Ze kunnen ook onze webgebaseerde Groepsbeheertool gebruiken om FTP-gebruikers (subgebruikers) aan te maken en te beheren.

Het reguliere FTP-protocol wordt als onveilig beschouwd omdat het gegevens zonder versleuteling verzendt. Voor sterke SSL-beveiliging kunt u FTPS (FTP over SSL/TLS) gebruiken. Er zijn twee methoden om SSL-beveiliging in te schakelen:

Impliciet: De FTP-client maakt rechtstreeks verbinding met een speciaal FTPS-poortnummer (standaard is 990);

Expliciet (FTPES): De FTP-client maakt verbinding met de reguliere FTP-poort 21 en geeft vervolgens het commando STARTTLS om de beveiliging te upgraden.

De FTP-server van DriveHQ ondersteunt zowel FTPS als FTPES. De meeste FTP-clienttoepassingen ondersteunen FTPS en FTPES, zoals FileZilla, CuteFTP, WsFTP, SmartFTP, WinSCP en Fetch, enzovoort.

Er bestaat nog een ander beveiligd bestandsoverdrachtprotocol genaamd SFTP, dat vaak wordt verward met "Secure FTP"; in feite staat het voor "SSH File Transfer Protocol", een compleet ander bestandsoverdrachtprotocol. Vanuit beveiligingsoogpunt zijn SSL/TLS en SSH vrijwel gelijk. SSL/TLS is duidelijk populairder dan SSH. De FTP-server van DriveHQ ondersteunt geen SFTP, omdat we daar geen sterke behoefte aan zien.

FTP in actieve en passieve modus:

Een FTP-verbinding kan twee TCP-verbindingen (kanalen) omvatten: het commandokanaal en het datakanaal. Het commandokanaal wordt gebruikt voor het verzenden van FTP-commando's; het datakanaal wordt gebruikt voor het overdragen van grote hoeveelheden data. Active Mode FTP vereist dat de FTP-server verbinding maakt met de FTP-client om de dataverbinding tot stand te brengen. Dit wordt vaak als onveilig beschouwd en wordt door veel firewalls/routers geblokkeerd. Passive Mode FTP vereist dat de FTP-client verbinding maakt met de FTP-server via een ander poortnummer. Dit wordt als veilig beschouwd en wordt zelden geblokkeerd. De FTP-server van DriveHQ ondersteunt zowel Active als Passive FTP. Als uw router/firewall of beveiligingssoftware Active FTP blokkeert, werkt het echter niet. Het is interessant om te weten dat de meeste nieuwe routers Active FTP ondersteunen.

Let op: de FTP-client van Microsoft voor de opdrachtregel ondersteunt geen passieve FTP. Vrijwel alle andere FTP-clientprogramma's ondersteunen zowel actieve als passieve FTP.

FTP en ProFTP

DriveHQ heeft twee FTP-sites: ftp.drivehq.com, die toegankelijk is voor alle gebruikers, en proftp.drivehq.com, die alleen beschikbaar is voor betalende leden (inclusief subgebruikers van een betaald groepsaccount). Omdat proftp.drivehq.com alleen beschikbaar is voor betalende leden, ondersteunt deze geen anonieme FTP. Ga voor meer informatie over onze FTP-serverhostingdienst naar [link]:

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

 

Voorbeeldbroncode van een FTP-client

De volgende C#-broncode wordt geleverd zoals deze is, zonder enige ondersteuning. U kunt deze vrij gebruiken in uw eigen software of verspreiden. De voorbeeldcode laat zien hoe u verbinding maakt met onze FTP-server en FTP-opdrachten uitvoert, zoals LIST, GET en PUT; u kunt ook zien hoe u passieve FTP en SSL instelt.


gebruikmakend van het systeem;
gebruikmakend van System.Collections.Generic;
gebruikmakend van System.Linq;
met behulp van System.Text;
gebruikmakend van System.Threading.Tasks;
gebruikmakend van System.Net;
System.IO gebruiken;
gebruikmakend van System.Security.Cryptography.X509Certificates;

///
/// Copyright (c) 2003-2016, Drive Headquarters, Inc. 
/// 
/// De voorbeeldcode voor de FTP-client laat zien hoe je met C# verbinding kunt maken met de FTP-server van DriveHQ.
/// Je kunt de code gratis gebruiken of verspreiden. De code wordt geleverd zoals hij is, zonder enige beperkingen 
/// DriveHQ biedt geen ondersteuning of garantie. DriveHQ aanvaardt geen enkele aansprakelijkheid voor het gebruik van de code.
///
naamruimte FTPClientSample
{
    lesprogramma
    {
        static string ftpServer = "ftp.drivehq.com"; // Je kunt ook proftp.drivehq.com gebruiken als je een betaald account hebt.
        statische string gebruikersnaam = "UW_GEBRUIKERSNAAM"; // Uw DriveHQ-gebruikersnaam
        statische string password = "UW_WACHTWOORD"; // Uw DriveHQ-wachtwoord
        statische void Main(string[] args)
        {
            // Een map op de FTP-server weergeven
            //Lijst("/"); 

            // Een bestand downloaden van de FTP-server
            //DownloadFile("ServerFileName.jpg", @"c:\temp\ClientFileName.jpg");

            // Upload een bestand naar de FTP-server
            UploadFile(@"c:\temp\ClientFileName.jpg", "/temp/ServerFileName.jpg");
        }


        ///
        /// Upload een bestand naar de FTP-server.
        ///
        /// een lokaal bestandspad
        /// het pad op de FTP-server, bijvoorbeeld /temp/bestandsnaam
        ///
        public static bool UploadFile(string srcFilePath, string destFilePath = null)
        {
            als String.IsNullOrWhiteSpace(srcFilePath))
                throw new ArgumentNullException("Source FilePath.");

            als (String.IsNullOrWhiteSpace(destFilePath))
                destFilePath = Path.GetFileName(srcFilePath);

            Uri serverUri = GetUri(destFilePath);

            // De serverUri moet beginnen met het ftp://-schema.
            als (serverUri.Scheme != Uri.UriSchemeFtp)
                retourneer false;

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

            // Lees de inhoud van het bestand in een byte-array
            FileStream sourceStream = new FileStream(srcFilePath, FileMode.Open, FileAccess.Read);
            byte[] fileContent = new byte[sourceStream.Length];
            sourceStream.Read(fileContent, 0, fileContent.Length);
            sourceStream.Close();

            // De inhoud van het bestand naar de FTP-server verzenden
            request.ContentLength = fileContent.Length;
            Stream requestStream = request.GetRequestStream();
            requestStream.Write(fileContent, 0, fileContent.Length);
            requestStream.Close();

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

            retourneer true;
        }

        ///
        /// Download het bestand srcFilePath van de FTP-server naar destFilePath. Als dit pad null is, wordt het bestand in de huidige map opgeslagen.
        ///
        ///
        ///
        ///
        public static bool DownloadFile(string srcFilePath, string destFilePath = null)
        {
            als String.IsNullOrWhiteSpace(srcFilePath))
                throw new ArgumentNullException("Source FilePath.");

            als (String.IsNullOrWhiteSpace(destFilePath))
                destFilePath = Path.GetFileName(srcFilePath);

            Uri serverUri = GetUri(srcFilePath);

            //// De serverUri moet beginnen met het ftp://-schema.
            als (serverUri.Scheme != Uri.UriSchemeFtp)
                retourneer false;

            FtpWebRequest request = 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 = new byte[32 * 1024];

            terwijl(waar) {
                int bytesRead = responseStream.Read(buffer, 0, buffer.Length);
                als (bytesRead == 0)
                    pauze;

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

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

            retourneer true;
        }

        ///
        /// De inhoud van een FTP-map weergeven
        ///
        ///
        ///
        public static string List(string path)
        {

            Uri serverUri = GetUri(path);

            //// De serverUri moet beginnen met het ftp://-schema.
            als (serverUri.Scheme != Uri.UriSchemeFtp)
                opbrengst ""; 

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

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

            resultaat retourneren;
        }

        private static FtpWebRequest CreateFtpRequest(Uri serverUri, string method)
        {
            FtpWebRequest request = (FtpWebRequest)WebRequest.Create(serverUri);
            request.EnableSsl = true;
            verzoek.GebruikPassief = true;
            request.UseBinary = true;
            request.KeepAlive = true;
            request.Credentials = new NetworkCredential(username, password);
            verzoek.Methode = methode;

            retourverzoek;
        }

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

    }
}
 

10-5-2016 19:01:04

  • ajayreigns
  • (1berichten)
Onderwerp: Ik heb VB.NET-code nodig om verbinding te maken met een PRO DriveHQ-account
Ik heb VB.NET-code nodig om verbinding te maken met een PRO DriveHQ-account

Deel alstublieft de Visual Basic .NET-code om verbinding te maken met uw PRO Drive HQ-account


Antwoord
19-11-2016 00:25:49

  • arsene16pcs017
  • (1berichten)
Onderwerp: Betreft: Voorbeeldcode voor FTP-client (C#-broncode): verbinding maken met de FT...
Betreft: Voorbeeldcode voor FTP-client (C#-broncode): verbinding maken met de FTP-server van DriveHQ

 Hallo!! Ik heb mijn webproject ontworpen. Zou ik alle stappen kunnen krijgen om mijn bestanden (tekst, video's, audio) in de cloud te delen, zodat anderen er toegang toe hebben? Ik zoek stappen en codevoorbeelden voor het uploaden en downloaden van bestanden naar DriveHQ! Alvast bedankt


Antwoord
15-1-2018 22:32:28

  • DriveHQSupport_
  • (676berichten)
Onderwerp: Betreft: Voorbeeldcode voor FTP-client (C#-broncode): verbinding maken met de FT...

Gebruiker: arsene16pcs017  -  15-1-2018 22:32:28

Betreft: Voorbeeldcode voor FTP-client (C#-broncode): verbinding maken met de FTP-server van DriveHQ

 Hallo!! Ik heb mijn webproject ontworpen. Zou ik alle stappen kunnen krijgen om mijn bestanden (tekst, video's, audio) in de cloud te delen, zodat anderen er toegang toe hebben? Ik zoek stappen en codevoorbeelden voor het uploaden en downloaden van bestanden naar DriveHQ! Alvast bedankt

Betreft: Voorbeeldcode voor FTP-client (C#-broncode): verbinding maken met de FTP-server van DriveHQ

Bedankt dat u contact met ons hebt opgenomen. 

U zou antwoorden op de meeste basisvragen over delen/publiceren in onze servicehandleiding moeten kunnen vinden: https://www.drivehq.com/ServiceManual.aspx. Heeft u specifieke vragen? Stuur dan een e-mail support@drivehq.com En we zullen ons best doen om u te helpen. 

 

Bedankt,
DriveHQ-ondersteuning


 


Antwoord
16-1-2018 08:32:57

  • glorber
  • (1berichten)
Onderwerp: Betreft: Voorbeeldcode voor FTP-client (C#-broncode): verbinding maken met de FT...
Betreft: Voorbeeldcode voor FTP-client (C#-broncode): verbinding maken met de FTP-server van DriveHQ

Ik ontwikkel een iOS-applicatie met Swift. De applicatie genereert een JSON-bestand dat ik wil uploaden naar DriveHQ en er vervolgens weer van wil downloaden.

Kun je een voorbeeld van Swift-code delen voor het verbinden met de DriveHQ FTP-server?

Bedankt.


Antwoord
22-9-2018 06:59:05

  • stleojohn
  • (1berichten)
Onderwerp: Betreft: Voorbeeldcode voor FTP-client (C#-broncode): verbinding maken met de FT...
Betreft: Voorbeeldcode voor FTP-client (C#-broncode): verbinding maken met de FTP-server van DriveHQ

 Ik krijg een onbekende uitzonderingsfout wanneer ik deze code probeer. Kunt u mij alstublieft helpen


Antwoord
26-11-2019 20:42:14

  • DriveHQ Support
  • (32berichten)
Onderwerp: Betreft: Voorbeeldcode voor FTP-client (C#-broncode): verbinding maken met de FT...

Gebruiker: stleojohn  -  26-11-2019 20:42:14

Betreft: Voorbeeldcode voor FTP-client (C#-broncode): verbinding maken met de FTP-server van DriveHQ

 Ik krijg een onbekende uitzonderingsfout wanneer ik deze code probeer. Kunt u mij alstublieft helpen

Betreft: Voorbeeldcode voor FTP-client (C#-broncode): verbinding maken met de FTP-server van DriveHQ

Plaats uw codefragment en het foutbericht. Test het ook in FileZilla om er zeker van te zijn dat uw netwerk de FTP-verbinding niet blokkeert.


Antwoord
26-11-2019 21:32:26

  • liveieee
  • (2berichten)
Onderwerp: Python FTP-clientprogramma
Python FTP-clientprogramma

Kun je de Python-versie voor DriveHQ delen


Antwoord
31-12-2019 04:28:41

Voeg toe aan bladwijzers en deel
Snel antwoorden

Leading Cloud Surveillance service

Leading Enterprise Cloud IT Service Since 2003