Nếu tập tin là nhỏ đủ các giải pháp đơn giản nhất là sử dụng kết hợp với ioutil.WriteFileioutil.ReadAll:
resp, err := http.Get("your url")
bytes, err := ioutil.ReadAll(resp.Body)
err = ioutil.WriteFile(filename, bytes, 0666)
Nếu tập tin của bạn không phải là quá nhỏ, bạn nên tránh việc tạo ra và điền vào bytes
mảng. Sau đó, bạn nên sử dụng io.Copy mà chỉ đơn giản bản sao các byte từ người đọc nhà văn:
resp, err := http.Get("your url")
f, err := os.Create(filename)
defer f.Close()
_, err := io.Copy(f, resp.Body)
Bạn phải thêm các xử lý trong cả hai trường hợp lỗi có liên quan.
Nguồn
2013-06-25 18:56:25
Tôi thực sự muốn nhấn mạnh 'ioutil.ReadAll' - hầu như không bao giờ bạn muốn làm gì trong một ứng dụng được xử lý tốt. – Dustin
@Dustin Nếu tệp đủ nhỏ, tôi nghĩ nó không quan trọng. Bạn có nghĩ rằng tôi nên nhấn mạnh hơn vào thời điểm này? –
Tôi không đồng ý với bạn, nhưng có lẽ phiên bản io.Copy phải là phiên bản đầu tiên. Tôi nghĩ rằng mã của bạn và lý luận là cả hai bên phải (mặc dù tôi có thể làm điều gì đó khó chịu cho chương trình của bạn). Tôi chỉ sợ rằng tôi sẽ thấy nhiều người làm điều "kéo mọi thứ vào trí nhớ". – Dustin