Я пытался остановить процесс загрузки файла, если я проверяю первые 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)
}
...