Heim > Backend-Entwicklung > Golang > Wie lade ich eine Datei mit einer POST-Anfrage in Go hoch?

Wie lade ich eine Datei mit einer POST-Anfrage in Go hoch?

Barbara Streisand
Freigeben: 2024-11-04 05:39:30
Original
490 Leute haben es durchsucht

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

Eine Datei mit einer POST-Anfrage in Go hochladen

Das Hochladen einer Datei über eine POST-Anfrage ist eine häufige Aufgabe bei der Entwicklung von Webanwendungen. Dies wird noch wichtiger, wenn Sie mit Telegram-Bots arbeiten, die das Hochladen von Dateien als Teil von API-Aufrufen erfordern.

Leider kann die Verwendung einer einfachen http.Post-Funktion zu Fehlern wie „Bad Request: there is no.“ führen Foto in der Anfrage. Um dieses Problem zu beheben, müssen Sie die Datei mit dem Inhaltstyp „multipart/form-data“ senden. So können Sie das erreichen:

  1. Erstellen Sie eine Inhaltsstruktur:

    Definieren Sie eine Inhaltsstruktur, um die Metadaten und Daten der Datei darzustellen:

    <code class="go">type content struct {
        fname string
        ftype string
        fdata []byte
    }</code>
    Nach dem Login kopieren
  2. Multipart Form Builder:

    Verwenden Sie multipart.NewWriter, um einen neuen Multipart Form Builder zu erstellen:

    <code class="go">var buf = new(bytes.Buffer)
    var w multipart.NewWriter(buf)</code>
    Nach dem Login kopieren
  3. Dateidaten hinzufügen:

    Durchlaufen Sie die Dateien, die Sie hochladen müssen, und erstellen Sie für jede ein Formularteil:

    <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>
    Nach dem Login kopieren
  4. Formular schließen:

    Sobald Sie alle Dateien hinzugefügt haben, schließen Sie den Multipart Form Builder:

    <code class="go">err := w.Close()
    if err != nil {
        return []byte{}, err
    }</code>
    Nach dem Login kopieren
  5. HTTP-Anfrage erstellen:

    Erstellen Sie eine neue HTTP-Anfrage mit http.NewRequest:

    <code class="go">req, err := http.NewRequest("POST", url, buf)
    if err != nil {
        return []byte{}, err
    }</code>
    Nach dem Login kopieren
  6. Inhaltstyp festlegen:

    Legen Sie den Content-Type-Header fest, um anzugeben, dass Sie mehrteilige/Formulardaten senden:

    <code class="go">req.Header.Add("Content-Type", w.FormDataContentType())</code>
    Nach dem Login kopieren
  7. Anfrage senden:

    Senden Sie die HTTP-Anfrage über einen HTTP-Client:

    <code class="go">client := &http.Client{}
    res, err := client.Do(req)
    if err != nil {
        return []byte{}, err
    }</code>
    Nach dem Login kopieren
  8. Antwort lesen:

    Antworttext lesen:

    <code class="go">cnt, err := io.ReadAll(res.Body)
    if err != nil {
        return []byte{}, err
    }</code>
    Nach dem Login kopieren

Indem Sie diese Schritte befolgen, können Sie Dateien mit POST-Anfragen in Go erfolgreich hochladen, auch bei der Arbeit mit Telegram-Bots.

Das obige ist der detaillierte Inhalt vonWie lade ich eine Datei mit einer POST-Anfrage in Go hoch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage