Как прочитать бинарные данные из http.Request

Как мне прочитать бинарные данные из http запроса и записать их в файл.

func (s *server) handlePutAvatar(contentDir string) http.HandlerFunc{
        return func(w http.ResponseWriter, r *http.Request){    
    
            var avatar []byte
            n, err:= r.Body.Read(avatar)
}

Когда я пытаюсь прочитать бинарные данные указанным выше способом, в массив avatar читается 0 байт, при том что в заголоках видно, что тело не пустое


Ответы (1 шт):

Автор решения: Senior Pomidor

вам надо все тело читать. нужно постоянно проверять на ошибку, на io.EOF. вместо этого используйте ioutil.ReadAll

func (s *server) handlePutAvatar(contentDir string) http.HandlerFunc {
    return func(w http.ResponseWriter, r *http.Request) {
        if r.Body == nil {
            w.WriteHeader(http.StatusBadRequest)
            return
        }
        defer r.Body.Close()

        avatar, err := ioutil.ReadAll(r.Body)
        if err != nil {
            w.WriteHeader(http.StatusUnprocessableEntity)
            return
        }

        // avatar here is available to use
    }
}
→ Ссылка