Go: upload di file tramite HTTP

Go: upload di file tramite HTTP

Go (o Golang) è un linguaggio di programmazione open-source creato da Google, noto per la sua efficienza e facilità d'uso. È particolarmente adatto per lo sviluppo di applicazioni web, inclusa la gestione di upload di file tramite HTTP. In questo articolo, esploreremo come implementare l'upload di file in Go utilizzando il pacchetto standard "net/http".

Per gestire l'upload di file, devi creare un handler HTTP per l'endpoint in cui verranno inviati i file. Iniziamo creando un file chiamato "main.go" e definiamo l'handler:


package main

import (
    "fmt"
    "net/http"
)

func uploadHandler(w http.ResponseWriter, r *http.Request) {
    if r.Method != http.MethodPost {
        http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
        return
    }

    file, header, err := r.FormFile("file")
    if err != nil {
        http.Error(w, "Failed to read the file", http.StatusInternalServerError)
        return
    }
    defer file.Close()

    // Puoi ora utilizzare 'file' per accedere al contenuto del file caricato.
    // Ad esempio, puoi copiare il file su disco o elaborarlo in qualche altro modo.

    fmt.Fprintf(w, "File '%s' caricato correttamente.\n", header.Filename)
}

func main() {
    http.HandleFunc("/upload", uploadHandler)

    // Ascolta sulla porta 8080 e avvia il server.
    fmt.Println("Server in ascolto su http://localhost:8080")
    http.ListenAndServe(":8080", nil)
}

In questo esempio, abbiamo creato un gestore chiamato uploadHandler che sarà chiamato quando viene effettuata una richiesta POST all'endpoint "/upload". Se la richiesta non è di tipo POST, risponderemo con un errore "Method not allowed". Successivamente, utilizzeremo r.FormFile("file") per accedere al file caricato e ottenere informazioni su di esso, come il nome del file. Puoi poi procedere a elaborare il file come desideri.

Per testare l'endpoint di upload, creiamo un semplice client HTML. Crea un file chiamato "index.html" con il seguente contenuto:


<!DOCTYPE html>
<html>
<head>
    <title>Carica un file</title>
</head>
<body>
    <h2>Carica un file</h2>
    <form action="http://localhost:8080/upload" method="post" enctype="multipart/form-data">
        <input type="file" name="file" id="file">
        <input type="submit" value="Carica">
    </form>
</body>
</html>

Ora hai completato l'implementazione sia del server Go che del client HTML. Per testare l'upload del file, avvia il server Go eseguendo il comando:

go run main.go

Dopo aver avviato il server, apri il file "index.html" nel tuo browser e seleziona un file tramite il pulsante "Carica". Una volta inviato il file, il server Go riceverà la richiesta, leggerà il file e risponderà con un messaggio indicando il nome del file caricato.

Torna su