


Golang verwendet Multipart, um große Dateien auf eine externe API hochzuladen. So vermeiden Sie das Problem „io.Copy(io.Writer, io.Reader)'.
Mein Ziel ist es, eine große Datei mithilfe des integrierten Net/http-Pakets von Golang auf POST https://somehost/media
hochzuladen.
HTTP-Format für API-Aufruf
POST /media HTTP/1.1 Host: somehost Content-Length: 434 Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="detail" More and more detail ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="file"; filename="some_big_video.mp4" Content-Type: <Content-Type header here> (data) ------WebKitFormBoundary7MA4YWxkTrZu0gW--
In Golang ist dies der Code.
package main import ( "fmt" "bytes" "mime/multipart" "os" "path/filepath" "io" "net/http" "io/ioutil" ) func main() { url := "https://somehost/media" method := "POST" payload := &bytes.Buffer{} writer := multipart.NewWriter(payload) _ = writer.WriteField("details", "more and more details") file, errFile3 := os.Open("/Users/vajahat/Downloads/some_big_video.mp4") defer file.Close() part3,errFile3 := writer.CreateFormFile("file","some_big_video.mp4") _, errFile3 = io.Copy(part3, file) if errFile3 != nil { fmt.Println(errFile3) return } err := writer.Close() if err != nil { fmt.Println(err) return } client := &http.Client {} req, err := http.NewRequest(method, url, payload) if err != nil { fmt.Println(err) return } req.Header.Set("Content-Type", writer.FormDataContentType()) res, err := client.Do(req) if err != nil { fmt.Println(err) return } defer res.Body.Close() body, err := ioutil.ReadAll(res.Body) if err != nil { fmt.Println(err) return } fmt.Println(string(body)) }
Wie man io.Copy(io.Writer, io.Reader)
Probleme
Der obige Code funktioniert gut, aber in der _, errFile3 = io.Copy(part3, file)
-Zeile. Dadurch wird im Wesentlichen alles in der Datei in den Hauptspeicher kopiert.
Wie vermeide ich diese Situation?
Gibt es eine Möglichkeit, große Dateien über multipart-formdata
an die API zu streamen?
Das Programm wird auf einem Remote-Server ausgeführt. Kann beim Öffnen einer sehr großen Datei abstürzen.
Richtige Antwort
Verwenden Sie io.Pipe und eine Goroutine, um die Datei in die Anfrage zu kopieren, ohne die gesamte Datei in den Speicher zu laden.
pr, pw := io.Pipe() writer := multipart.NewWriter(pw) ct := writer.FormDataContentType() go func() { _ = writer.WriteField("details", "more and more details") file, err := os.Open("/Users/vajahat/Downloads/some_big_video.mp4") if err != nil { pw.CloseWithError(err) return } defer file.Close() part3, err := writer.CreateFormFile("file", "some_big_video.mp4") if err != nil { pw.CloseWithError(err) return } _, err = io.Copy(part3, file) if err != nil { pw.CloseWithError(err) return } pw.CloseWithError(writer.Close()) }() client := &http.Client{} req, err := http.NewRequest(method, url, pr) if err != nil { fmt.Println(err) return } req.Header.Set("Content-Type", ct) // remaining code as before
Das obige ist der detaillierte Inhalt vonGolang verwendet Multipart, um große Dateien auf eine externe API hochzuladen. So vermeiden Sie das Problem „io.Copy(io.Writer, io.Reader)'.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Basierend auf der kontinuierlichen Optimierung großer Modelle haben LLM-Agenten – diese leistungsstarken algorithmischen Einheiten – das Potenzial gezeigt, komplexe mehrstufige Argumentationsaufgaben zu lösen. Von der Verarbeitung natürlicher Sprache bis hin zum Deep Learning rücken LLM-Agenten nach und nach in den Fokus von Forschung und Industrie. Sie können nicht nur menschliche Sprache verstehen und generieren, sondern auch Strategien formulieren, Aufgaben in verschiedenen Umgebungen ausführen und sogar API-Aufrufe und Codierung zum Erstellen verwenden Lösungen. In diesem Zusammenhang ist die Einführung des AgentQuest-Frameworks ein Meilenstein. Es bietet nicht nur eine modulare Benchmarking-Plattform für die Bewertung und Weiterentwicklung von LLM-Agenten, sondern bietet Forschern auch leistungsstarke Tools, um die Leistung dieser Agenten gleichzeitig zu verfolgen und zu verbessern granularerer Ebene

So verwenden Sie die Webdienste und API-Aufrufe von PHP Mit der kontinuierlichen Weiterentwicklung der Internettechnologie sind Webdienste und API-Aufrufe zu einem unverzichtbaren Bestandteil für Entwickler geworden. Durch die Verwendung von Webdiensten und API-Aufrufen können wir problemlos mit anderen Anwendungen interagieren, um Daten abzurufen oder bestimmte Funktionen zu implementieren. Als beliebte serverseitige Skriptsprache bietet PHP außerdem eine Fülle von Funktionen und Tools zur Unterstützung der Entwicklung von Webdiensten und API-Aufrufen. In diesem Artikel werde ich kurz die Verwendung von PHP vorstellen

Um die Litecoin-Wallet-Adresse anzuzeigen, besuchen Sie die Litecoin-Wallet und suchen Sie auf der Registerkarte „Empfangen“ nach der Adresse. Sie können auch einen Blockchain-Browser oder einen API-Aufruf verwenden.

Kann von Mingw kompilierte Software in einer Linux-Umgebung verwendet werden? Mingw ist eine Toolkette, die auf der Windows-Plattform zum Kompilieren und Generieren von Programmen verwendet wird, die unter Windows ausgeführt werden können. Kann die von Mingw kompilierte Software also in der Linux-Umgebung verwendet werden? Die Antwort ist ja, aber es erfordert einige zusätzliche Arbeiten und Schritte. Die gebräuchlichste Möglichkeit, unter Windows kompilierte Programme unter Linux auszuführen, ist die Verwendung von Wine. Wine ist ein Tool, das in Linux und anderen ähnlichen Un verwendet wird

Geschrieben von Noah |. 51CTO Technology Stack (WeChat ID: blog51cto) Siri, die von Nutzern immer als „etwas geistig zurückgeblieben“ kritisiert wird, kann gerettet werden! Siri gehört seit seiner Geburt zu den Vertretern auf dem Gebiet der intelligenten Sprachassistenten, doch seine Leistung ist seit langem unbefriedigend. Allerdings wird erwartet, dass die neuesten Forschungsergebnisse des Apple-Teams für künstliche Intelligenz den Status quo deutlich verändern werden. Diese Ergebnisse sind aufregend und wecken große Erwartungen für die Zukunft dieses Bereichs. In entsprechenden Forschungsarbeiten beschreiben die KI-Experten von Apple ein System, mit dem Siri mehr kann, als nur Inhalte in Bildern zu identifizieren, und dadurch intelligenter und nützlicher wird. Dieses Funktionsmodell heißt ReALM, basiert auf dem GPT4.0-Standard und verfügt über eine

Deepseekai Tool User Guide und FAQ Deepseek ist ein leistungsstarkes KI -Intelligent -Tool. FAQ: Der Unterschied zwischen verschiedenen Zugriffsmethoden: Es gibt keinen Unterschied in der Funktion zwischen Webversion, App -Version und API -Aufrufen, und App ist nur ein Wrapper für die Webversion. Die lokale Bereitstellung verwendet ein Destillationsmodell, das der Vollversion von Deepseek-R1 geringfügig unteren ist, das 32-Bit-Modell theoretisch 90% Vollversionsfunktion. Was ist eine Taverne? SillyTervern ist eine Front-End-Oberfläche, die das KI-Modell über API oder Ollama anruft. Was ist Breaking Limit

Mein Ziel ist es, mit dem integrierten net/http-Paket von Golang eine große Datei auf POST https://somehost/media hochzuladen. HTTP-Format POST/mediaHTTP/1.1Host:somehostContent-Length:434Content-Type:multipart/form-data;boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW------WebKitFormBoundary7MA4YWxkTr

Tipps zum Aufrufen der PHP-Kuaishou-API-Schnittstelle: So gehen Sie mit den von der Schnittstelle zurückgegebenen Fehlerinformationen um. Wenn Sie PHP zum Aufrufen der Kuaishou-API-Schnittstelle verwenden, stoßen wir häufig auf Situationen, in denen die Schnittstelle Fehler zurückgibt. Für von der Verarbeitungsschnittstelle zurückgegebene Fehlerinformationen müssen wir eine entsprechende Verarbeitung und Rückmeldung bereitstellen, um die Stabilität und Benutzererfahrung der Anwendung zu verbessern. In diesem Artikel werden einige Techniken zum Umgang mit von Schnittstellen zurückgegebenen Fehlerinformationen vorgestellt und entsprechende Codebeispiele bereitgestellt. Verwenden Sie try-catch, um Ausnahmen abzufangen. Beim Aufruf der API-Schnittstelle können einige Ausnahmefehler auftreten.
