Maison >développement back-end >Golang >Comment utiliser Golang pour implémenter le téléchargement de fichiers de formulaire ?
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().
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.
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
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 pratiqueCe 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!