Есть ли способ загрузить большой файл с помощью Go, который сохранит содержимое непосредственно в файл, вместо того, чтобы хранить его все в памяти перед записью в файл? Поскольку файл такой большой, его сохранение в памяти перед записью в файл приведет к израсходованию всей памяти.
106
io.Copy
считывает 32 КБ (максимум) из ввода и записывает их на вывод, а затем повторяется. Так что не беспокойтесь о памяти.client := http.Client{Timeout: 10 * time.Second,} client.Get("http://example.com/")
Более описательная версия ответа Стива М.
источник
Выбранный выше ответ с использованием
io.Copy
- это именно то, что вам нужно, но если вас интересуют дополнительные функции, такие как возобновление прерванных загрузок, автоматическое именование файлов, проверка контрольной суммы или мониторинг выполнения нескольких загрузок, ознакомьтесь с пакетом grab .источник
Вот образец. https://github.com/thbar/golang-playground/blob/master/download-files.go
Также я даю вам несколько кодов, которые могут вам помочь.
код:
источник
ioutil.ReadAll()
. Это нормально, если вы имеете дело с крошечными файлами.