Apakah ada cara untuk mengunduh file besar menggunakan Go yang akan menyimpan konten langsung ke dalam file daripada menyimpan semuanya di memori sebelum menulisnya ke file? Karena filenya sangat besar, menyimpan semuanya di memori sebelum menulisnya ke file akan menghabiskan semua memori.
106
io.Copy
membaca 32kb (maksimum) dari input dan menuliskannya ke output, lalu diulangi. Jadi jangan khawatir tentang ingatan.client := http.Client{Timeout: 10 * time.Second,} client.Get("http://example.com/")
Versi yang lebih deskriptif dari jawaban Steve M.
sumber
Jawaban yang dipilih di atas menggunakan
io.Copy
adalah apa yang Anda butuhkan, tetapi jika Anda tertarik dengan fitur tambahan seperti melanjutkan unduhan yang rusak, penamaan file otomatis, validasi checksum, atau memantau kemajuan beberapa unduhan, periksa paket ambil .sumber
Ini contohnya. https://github.com/thbar/golang-playground/blob/master/download-files.go
Juga saya memberi Anda beberapa kode mungkin membantu Anda.
kode:
sumber
ioutil.ReadAll()
. Tidak apa-apa, selama Anda berurusan dengan file kecil.