Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Melakukan Muat Naik POST Pra-tandatangan ke AWS S3 menggunakan Go?

Bagaimana untuk Melakukan Muat Naik POST Pra-tandatangan ke AWS S3 menggunakan Go?

Linda Hamilton
Lepaskan: 2024-11-23 01:01:14
asal
416 orang telah melayarinya

How to Perform a Pre-signed POST Upload to AWS S3 using Go?

Melaksanakan Muat Naik POST Pra-tandatangan ke AWS S3 dalam Go

Dalam panduan ini, kami akan menyelidiki secara spesifik melaksanakan pra -muat naik POST yang ditandatangani ke baldi AWS S3 menggunakan Go. Pendekatan ini berbeza daripada mekanisme muat naik pra-tandatangan yang lebih biasa yang melibatkan PUT.

Prasyarat:

  1. Konfigurasikan baldi S3 anda untuk membenarkan akses muat turun awam dengan menetapkan dasar baldi yang sesuai.
  2. Bina dasar POST yang membenarkan muat naik fail, dengan menyatakan baldi, kunci, masa tamat tempoh, senarai kawalan akses (ACL) dan parameter lain yang diperlukan.
  3. Jana dan tandatangani dasar POST menggunakan bukti kelayakan pemilik baldi S3. Ini melibatkan pengekodan base64, pengiraan cincang HMAC-SHA256 dan pengekodan heks.

Pembinaan Data Borang Berbilang Bahagian dan Permintaan POST:

Untuk memulakan muat naik, sediakan permintaan data borang berbilang bahagian yang mengandungi semua medan yang dinyatakan dalam dasar, termasuk dokumen dasar yang ditandatangani, kunci dan fail kandungan. Gunakan kaedah CreateFormField bagi pakej berbilang bahagian untuk mencipta setiap medan borang.

Contoh Kod:

Berikut ialah coretan kod Go yang menggariskan proses:

func Upload(url string, fields Fields) error {
    var b bytes.Buffer
    w := multipart.NewWriter(&b)
    for _, f := range fields {
        fw, err := w.CreateFormField(f.Key)
        if err != nil {
            return err
        }
        if _, err := fw.Write([]byte(f.Value)); err != nil {
            return err
        }
    }
    w.Close()

    req, err := http.NewRequest("POST", url, &b)
    if err != nil {
        return err
    }
    req.Header.Set("Content-Type", w.FormDataContentType())

    client := &http.Client{}
    res, err := client.Do(req)
    if err != nil {
        return err
    }
    if res.StatusCode != http.StatusOK {
        err = fmt.Errorf("bad status: %s", res.Status)
    }
    return nil
}
Salin selepas log masuk

Dengan mengikuti langkah-langkah ini, anda boleh memuat naik fail ke baldi AWS S3 dengan lancar menggunakan kaedah POST pra-tandatangan dalam Go.

Atas ialah kandungan terperinci Bagaimana untuk Melakukan Muat Naik POST Pra-tandatangan ke AWS S3 menggunakan 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