Закрыть файл загрузки подключения, если тип контента не разрешен в Golang - PullRequest
0 голосов
/ 06 апреля 2020

Я пытался остановить процесс загрузки файла, если я проверяю первые 3072 байта и тип содержимого не разрешен. Прямо сейчас он дает ответ после его загрузки.

Как я могу остановить процесс загрузки после проверки только первых 3072 байтов?

Мой код:

// imported     "github.com/gabriel-vasile/mimetype"


const (
    MB = 1 << 20
)


func Uploader() {
r.ParseMultipartForm(10 * MB)
        r.Body = http.MaxBytesReader(w, r.Body, 30*MB)
        file, handler, err := r.FormFile("upload")
        if handler != nil {
            fmt.Println(handler.Header)
        }
        if err != nil {
            fmt.Println(err)
        }
        data := make([]byte, 3072)
        if _, err = file.Read(data); err != nil {
            panic(err)
        }
        if _, err = file.Seek(0, 0); err != nil {
            panic(err)
        }
        mime := mimetype.Detect(data)
        log.Printf("MIME: %#v\n", mime.String())
        allowedContentType := map[string]string{"video/mp4": "mp4", "audio/mpeg": "mp3"}
        if _, ok := allowedContentType[mime.String()]; ok == false {
            w.WriteHeader(http.StatusForbidden)
        } else {
       defer file.Close()

            f, err := os.OpenFile("../path/to/upload, os.O_WRONLY|os.O_CREATE, 0666)
            if err != nil {
                fmt.Println(err)
                panic(err)
            }

            defer f.Close()
            io.Copy(f, file)
}
...
...