Bagaimana untuk Memuat naik Fail dengan Permintaan POST dalam Go?

Barbara Streisand
Lepaskan: 2024-11-04 05:39:30
asal
364 orang telah melayarinya

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

Muat naik Fail dengan Permintaan POST dalam Go

Memuat naik fail melalui permintaan POST ialah tugas biasa semasa membangunkan aplikasi web. Ini menjadi lebih penting apabila bekerja dengan bot Telegram, yang memerlukan fail dimuat naik sebagai sebahagian daripada panggilan API.

Malangnya, menggunakan fungsi http.Post yang mudah boleh mengakibatkan ralat seperti "Permintaan Buruk: tiada gambar dalam permintaan." Untuk menyelesaikan isu ini, anda perlu menghantar fail menggunakan jenis kandungan multipart/form-data. Begini cara anda boleh mencapainya:

  1. Buat Struktur Kandungan:

    Tentukan struct kandungan untuk mewakili metadata dan data fail:

    <code class="go">type content struct {
        fname string
        ftype string
        fdata []byte
    }</code>
    Salin selepas log masuk
  2. Borang Berbilang Bahagian Pembina:

    Gunakan multipart.NewWriter untuk mencipta pembina borang berbilang bahagian baharu:

    <code class="go">var buf = new(bytes.Buffer)
    var w multipart.NewWriter(buf)</code>
    Salin selepas log masuk
  3. Tambah Data Fail:

    Lelaran pada fail yang anda perlu muat naik dan buat bahagian borang untuk setiap satu satu:

    <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>
    Salin selepas log masuk
  4. Tutup Borang:

    Setelah anda menambah semua fail, tutup pembina borang berbilang bahagian:

    <code class="go">err := w.Close()
    if err != nil {
        return []byte{}, err
    }</code>
    Salin selepas log masuk
  5. Buat HTTP Permintaan:

    Buat permintaan HTTP baharu menggunakan http.Permintaan Baharu:

    <code class="go">req, err := http.NewRequest("POST", url, buf)
    if err != nil {
        return []byte{}, err
    }</code>
    Salin selepas log masuk
  6. Tetapkan Jenis Kandungan:

    Tetapkan pengepala Jenis Kandungan untuk menunjukkan bahawa anda sedang menghantar multipart/form-data:

    <code class="go">req.Header.Add("Content-Type", w.FormDataContentType())</code>
    Salin selepas log masuk
  7. Hantar Permintaan:

    Hantar permintaan HTTP menggunakan klien HTTP:

    <code class="go">client := &http.Client{}
    res, err := client.Do(req)
    if err != nil {
        return []byte{}, err
    }</code>
    Salin selepas log masuk
  8. Baca Respons:

    Baca badan respons:

    <code class="go">cnt, err := io.ReadAll(res.Body)
    if err != nil {
        return []byte{}, err
    }</code>
    Salin selepas log masuk

Dengan mengikuti langkah ini, anda boleh berjaya memuat naik fail dengan permintaan POST dalam Go, termasuk semasa bekerja dengan bot Telegram.

Atas ialah kandungan terperinci Bagaimana untuk Memuat naik Fail dengan Permintaan POST dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!