Maison > développement back-end > Golang > le corps du texte

Comment télécharger un fichier avec une requête POST dans Go ?

Barbara Streisand
Libérer: 2024-11-04 05:39:30
original
364 Les gens l'ont consulté

How to Upload a File with a POST Request in Go?

Télécharger un fichier avec une requête POST dans Go

Le téléchargement d'un fichier via une requête POST est une tâche courante lors du développement d'applications Web. Cela devient encore plus important lorsque vous travaillez avec des robots Telegram, qui nécessitent que les fichiers soient téléchargés dans le cadre des appels API.

Malheureusement, l'utilisation d'une simple fonction http.Post peut entraîner des erreurs telles que "Bad Request: There is no photo dans la demande." Pour résoudre ce problème, vous devez envoyer le fichier en utilisant le type de contenu multipart/form-data. Voici comment y parvenir :

  1. Créer une structure de contenu :

    Définissez une structure de contenu pour représenter les métadonnées et les données du fichier :

    <code class="go">type content struct {
        fname string
        ftype string
        fdata []byte
    }</code>
    Copier après la connexion
  2. Générateur de formulaires en plusieurs parties :

    Utilisez multipart.NewWriter pour créer un nouveau générateur de formulaires en plusieurs parties :

    <code class="go">var buf = new(bytes.Buffer)
    var w multipart.NewWriter(buf)</code>
    Copier après la connexion
  3. Ajouter des données de fichier :

    Parcourez les fichiers que vous devez télécharger et créez une partie de formulaire pour chacun :

    <code class="go">for _, f := range files {
        part, err := w.CreateFormFile(f.ftype, filepath.Base(f.fname))
        if err != nil {
            return []byte{}, err
        }
    
        _, err = part.Write(f.fdata)
        if err != nil {
            return []byte{}, err
        }
    }</code>
    Copier après la connexion
  4. Fermer le formulaire :

    Une fois que vous avez ajouté tous les fichiers, fermez le générateur de formulaire en plusieurs parties :

    <code class="go">err := w.Close()
    if err != nil {
        return []byte{}, err
    }</code>
    Copier après la connexion
  5. Créer une requête HTTP :

    Créez une nouvelle requête HTTP à l'aide de http.NewRequest :

    <code class="go">req, err := http.NewRequest("POST", url, buf)
    if err != nil {
        return []byte{}, err
    }</code>
    Copier après la connexion
  6. Définir le type de contenu :

    Définissez l'en-tête Content-Type pour indiquer que vous envoyez des données multipart/form :

    <code class="go">req.Header.Add("Content-Type", w.FormDataContentType())</code>
    Copier après la connexion
  7. Envoyer la demande:

    Envoyez la requête HTTP à l'aide d'un client HTTP :

    <code class="go">client := &http.Client{}
    res, err := client.Do(req)
    if err != nil {
        return []byte{}, err
    }</code>
    Copier après la connexion
  8. Lire la réponse :

    Lisez le corps de la réponse :

    <code class="go">cnt, err := io.ReadAll(res.Body)
    if err != nil {
        return []byte{}, err
    }</code>
    Copier après la connexion

En suivant ces étapes, vous pouvez réussir à télécharger des fichiers avec des requêtes POST dans Go, y compris lorsque vous travaillez avec des robots Telegram.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!