Existe uma maneira de baixar um arquivo grande usando Go que armazene o conteúdo diretamente em um arquivo em vez de armazenar tudo na memória antes de gravá-lo em um arquivo? Como o arquivo é muito grande, armazenar tudo na memória antes de gravá-lo em um arquivo vai usar toda a memória.
106
io.Copy
lê 32kb (máximo) da entrada e os grava na saída, depois repete. Portanto, não se preocupe com a memória.client := http.Client{Timeout: 10 * time.Second,} client.Get("http://example.com/")
Uma versão mais descritiva da resposta de Steve M.
fonte
A resposta selecionada acima usando
io.Copy
é exatamente o que você precisa, mas se você estiver interessado em recursos adicionais, como retomar downloads interrompidos, nomes automáticos de arquivos, validação de soma de verificação ou monitoramento do progresso de vários downloads, verifique o pacote de captura .fonte
Aqui está um exemplo. https://github.com/thbar/golang-playground/blob/master/download-files.go
Também te dou alguns códigos que podem ajudá-lo.
código:
fonte
ioutil.ReadAll()
. Tudo bem, contanto que você esteja lidando com arquivos minúsculos.