Existe-t-il un moyen de télécharger un fichier volumineux à l'aide de Go qui stockera le contenu directement dans un fichier au lieu de tout stocker en mémoire avant de l'écrire dans un fichier? Parce que le fichier est si gros, le stockage de tout en mémoire avant de l'écrire dans un fichier va épuiser toute la mémoire.
106
io.Copy
lit 32 Ko (maximum) à partir de l'entrée et les écrit dans la sortie, puis se répète. Alors ne vous inquiétez pas de la mémoire.client := http.Client{Timeout: 10 * time.Second,} client.Get("http://example.com/")
Une version plus descriptive de la réponse de Steve M.
la source
La réponse sélectionnée ci-dessus en utilisant
io.Copy
est exactement ce dont vous avez besoin, mais si vous êtes intéressé par des fonctionnalités supplémentaires telles que la reprise des téléchargements interrompus, l'attribution de noms automatiques aux fichiers, la validation de la somme de contrôle ou la surveillance de la progression de plusieurs téléchargements, consultez le package de capture .la source
Voici un exemple. https://github.com/thbar/golang-playground/blob/master/download-files.go
Aussi, je vous donne quelques codes qui pourraient vous aider.
code:
la source
ioutil.ReadAll()
. C'est très bien, tant que vous avez affaire à de petits fichiers.