Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk menggunakan Golang untuk melaksanakan muat naik fail borang Borang?

Bagaimana untuk menggunakan Golang untuk melaksanakan muat naik fail borang Borang?

WBOY
WBOYasal
2024-06-03 22:02:00912semak imbas

Menggunakan borang Borang untuk melaksanakan muat naik fail dalam bahasa Go termasuk langkah berikut: Tetapkan atribut enctype="multipart/form-data" dalam HTML dan buat borang. Gunakan r.ParseMultipartForm() dalam Pergi untuk mengendalikan permintaan borang. Gunakan r.FormFile() untuk mendapatkan fail. Simpan fail ke lokasi sasaran dengan menciptanya dan menggunakan io.Copy().

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

Gunakan borang Borang untuk melaksanakan muat naik fail dalam bahasa Go

Dalam aplikasi web, muat naik fail borang adalah senario biasa. Golang menyediakan pakej HTTP yang berkuasa yang boleh digunakan untuk melaksanakan fungsi ini dengan mudah dan cekap.

Buat borang

Mula-mula, buat borang dalam halaman HTML dan tetapkan atribut enctype="multipart/form-data", yang menunjukkan bahawa borang akan mengandungi data fail: 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)
}

Mengendalikan muat naik fail

Dalam pengendali HTTP Go, gunakan ParseMultipartForm untuk mengendalikan permintaan borang:

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)
}

Kes praktikal

Berikut ialah contoh mudah untuk memuat naik fail menggunakan Go: 🎜rreee🎜Dengan cara ini , anda boleh menggunakan aplikasi Go Muat naik fail Borang mudah dilaksanakan dalam program. 🎜

Atas ialah kandungan terperinci Bagaimana untuk menggunakan Golang untuk melaksanakan muat naik fail borang Borang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn