Il File Transfer Protocol (FTP) è un protocollo standard utilizzato per il trasferimento di file tra un client e un server su una rete. In questo articolo, esploreremo come effettuare l'upload di file tramite FTP in Go, un linguaggio di programmazione versatile e potente. Impareremo come connetterci a un server FTP, caricare un file e gestire eventuali errori lungo il percorso.
Iniziamo installando la libreria "goftp" che semplificherà l'interazione con il server FTP. Apri un terminale e digita il seguente comando per installare la libreria:
go get github.com/jlaffaye/ftp
Dopo aver installato le dipendenze, creiamo un nuovo file chiamato "main.go" e apriamo il nostro editor di testo preferito per iniziare a scrivere il codice.
package main
import (
"fmt"
"github.com/jlaffaye/ftp"
"os"
)
func main() {
// Dati di accesso al server FTP
ftpServer := "ftp.example.com"
username := "your_username"
password := "your_password"
// Percorso del file locale da caricare
localFilePath := "path/to/your/file.txt"
// Percorso di destinazione sul server FTP
remoteDir := "/path/on/ftp/server/"
// Connessione al server FTP
ftpClient, err := ftp.Dial(ftpServer)
if err != nil {
fmt.Println("Errore durante la connessione al server FTP:", err)
return
}
defer ftpClient.Quit()
// Autenticazione
err = ftpClient.Login(username, password)
if err != nil {
fmt.Println("Errore durante l'autenticazione:", err)
return
}
// Apertura del file locale
file, err := os.Open(localFilePath)
if err != nil {
fmt.Println("Impossibile aprire il file locale:", err)
return
}
defer file.Close()
// Creazione della directory remota (se non esiste)
err = ftpClient.MakeDir(remoteDir)
if err != nil {
fmt.Println("Errore durante la creazione della directory remota:", err)
}
// Caricamento del file
remoteFilePath := remoteDir + "file.txt"
err = ftpClient.Stor(remoteFilePath, file)
if err != nil {
fmt.Println("Errore durante il caricamento del file:", err)
return
}
fmt.Println("File caricato con successo!")
}
Prima di eseguire il codice, assicurarsi di sostituire i valori di "ftpServer", "username", "password", "localFilePath" e "remoteDir" con i dati appropriati del proprio server FTP e del file da caricare.