B-Arts DocumentationIndice generale

BFTPClient - Esempi

Connessione e operazioni asincrone

using B.BNet;

using BFTPClient ftp = new BFTPClient
{
  UseSSL = true,
  UseImplicitSSL = false,
  ProtectDataChannel = true,
  Timeout = 15000
};

if (!await ftp.ConnectAsync("ftp.example.com", 21) ||
    !await ftp.LoginAsync(username, password))
{
  foreach (Exception error in ftp.ExceptionList)
  {
    // Gestire secondo le regole dell'applicazione.
  }
  return;
}

List<BFtpItem>? items = await ftp.ReadDirectoryAsync("/incoming");
bool downloaded = await ftp.DownloadFileAsync(
  "/incoming/data.bif",
  localFilePath);

ftp.Disconnect();

Il client usa connessioni dati FTP passive (PASV). UseSSL = true abilita FTPS; UseImplicitSSL distingue handshake immediato e AUTH TLS. Con ProtectDataChannel = true, dopo il login vengono richiesti PBSZ 0 e PROT P.

Costruttore con connessione immediata

using BFTPClient ftp = new BFTPClient(
  "ftp.example.com",
  21,
  username,
  password,
  useSSL: false,
  timeout: 10000);

List<string>? rawRows = ftp.ListDirectory("/outgoing");

Questo costruttore si connette ed effettua il login. Lancia InvalidOperationException se la connessione fallisce e UnauthorizedAccessException se fallisce il login. Per gestire gli errori tramite ExceptionList, usare il costruttore vuoto e chiamare separatamente Connect e Login.

Upload dai tipi B-Arts

using B.BIO;

BFile file = new BFile(localFilePath);
bool uploaded = await ftp.UploadFileAsync(file, "/incoming/data.bif");

byte[] payload = CreatePayload();
bool uploadedBytes = await ftp.UploadFileAsync(payload, "/incoming/payload.bin");

Sono disponibili overload per percorso locale, byte[] e BFile, sia sincroni sia asincroni. Per il download sono disponibili percorso locale, byte[] e BFile.

Diagnostica e sicurezza TLS

if (!uploaded)
{
  string protocolLog = ftp.LogText.Text;
  IReadOnlyList<Exception> errors = ftp.ExceptionList;
}

AcceptAllCertificates = true disabilita la validazione del certificato TLS e deve essere limitato ad ambienti controllati di sviluppo o collaudo. Non proporlo come impostazione di produzione.