Maison > développement back-end > Golang > Comment télécharger efficacement des fichiers volumineux en Go sans remplir la mémoire ?

Comment télécharger efficacement des fichiers volumineux en Go sans remplir la mémoire ?

Barbara Streisand
Libérer: 2024-11-13 12:58:02
original
434 Les gens l'ont consulté

How to Efficiently Download Large Files in Go Without Filling Up Memory?

Télécharger efficacement des fichiers volumineux à l'aide de Go

Le stockage de fichiers volumineux en mémoire peut surcharger les ressources d'un ordinateur. Dans Go, comment pouvons-nous télécharger de tels fichiers directement, en évitant cette contrainte de mémoire ?

Réponse :

En supposant que le téléchargement se fasse via HTTP :

import (
    "net/http"
    "io"
    "os"
)

func DownloadFile(url, filepath string) (int64, error) {
    // Open the destination file
    out, err := os.Create(filepath)
    if err != nil {
        return 0, err
    }
    defer out.Close()

    // Start the HTTP request
    resp, err := http.Get(url)
    if err != nil {
        return 0, err
    }
    defer resp.Body.Close()

    // Stream the response body into the file (avoiding full buffering)
    n, err := io.Copy(out, resp.Body)
    if err != nil {
        return 0, err
    }

    return n, nil
}
Copier après la connexion

Cette approche utilise le corps de réponse HTTP comme lecteur. Des fonctions comme io.Copy() peuvent fonctionner sur ce lecteur, nous permettant de traiter la réponse par morceaux.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal