Maison >développement back-end >Golang >Comment utiliser Golang pour implémenter le téléchargement de fichiers de formulaire ?

Comment utiliser Golang pour implémenter le téléchargement de fichiers de formulaire ?

WBOY
WBOYoriginal
2024-06-03 22:02:00910parcourir

L'utilisation du formulaire Form pour implémenter le téléchargement de fichiers dans le langage Go comprend les étapes suivantes : Définissez l'attribut enctype="multipart/form-data" en HTML et créez le formulaire. Utilisez r.ParseMultipartForm() dans Go pour gérer les demandes de formulaire. Utilisez r.FormFile() pour obtenir le fichier. Enregistrez le fichier à l'emplacement cible en le créant et en utilisant io.Copy().

如何使用 Golang 实现 Form 表单文件上传?

Utilisez le formulaire de formulaire pour implémenter le téléchargement de fichiers en langage Go

Dans les applications Web, le téléchargement de fichiers de formulaire est un scénario courant. Golang fournit un package HTTP puissant qui peut être utilisé pour implémenter cette fonctionnalité facilement et efficacement.

Créez le formulaire

Tout d'abord, créez un formulaire dans la page HTML et définissez l'attribut enctype="multipart/form-data", qui indique que le formulaire contiendra des données de fichier : enctype="multipart/form-data" 属性,这表明表单将包含文件数据:

<form action="/upload" method="POST" enctype="multipart/form-data">
  <input type="file" name="file">
  <input type="submit" value="上传">
</form>

处理文件上传

在 Go HTTP 处理程序中,使用 ParseMultipartForm

func uploadHandler(w http.ResponseWriter, r *http.Request) {
  err := r.ParseMultipartForm(32 << 20) // 设置最大文件大小为 32MB
  if err != nil {
    http.Error(w, "无法解析表单数据", http.StatusBadRequest)
    return
  }

  // 获取文件
  file, _, err := r.FormFile("file")
  if err != nil {
    http.Error(w, "无法获取上传文件", http.StatusInternalServerError)
    return
  }
  defer file.Close()

  // 保存文件
  dst, err := os.Create("uploaded_file")
  if err != nil {
    http.Error(w, "无法创建目标文件", http.StatusInternalServerError)
    return
  }
  defer dst.Close()

  if _, err := io.Copy(dst, file); err != nil {
    http.Error(w, "无法写入文件", http.StatusInternalServerError)
    return
  }

  http.Redirect(w, r, "/success", http.StatusFound)
}

Gestion des téléchargements de fichiers

Dans le gestionnaire HTTP Go, utilisez ParseMultipartForm pour gérer les requêtes de formulaire :

package main

import (
  "fmt"
  "net/http"
  "os"
)

func uploadHandler(w http.ResponseWriter, r *http.Request) {
  err := r.ParseMultipartForm(32 << 20)
  if err != nil {
    http.Error(w, "无法解析表单数据", http.StatusBadRequest)
    return
  }

  file, _, err := r.FormFile("file")
  if err != nil {
    http.Error(w, "无法获取上传文件", http.StatusInternalServerError)
    return
  }

  filename := "./uploaded_file_" + r.Form.Get("file")
  dst, err := os.Create(filename)
  if err != nil {
    http.Error(w, "无法创建目标文件", http.StatusInternalServerError)
    return
  }

  if _, err := io.Copy(dst, file); err != nil {
    http.Error(w, "无法写入文件", http.StatusInternalServerError)
    return
  }

  fmt.Fprintf(w, "文件 %s 上传成功!", filename)
}

func main() {
  http.HandleFunc("/upload", uploadHandler)
  http.ListenAndServe(":8080", nil)
}

Cas pratique

Ce qui suit est un exemple simple de téléchargement de fichiers à l'aide de Go : 🎜rrreee🎜De cette façon , vous pouvez utiliser l'application Go. Le téléchargement de fichiers de formulaire est facilement implémenté dans le programme. 🎜

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!

Déclaration:
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