上传文件时后端先判是否符合条件,不符合的拒绝上传

// 文件为大小文件的依据是ParseMultipartForm的maxMemory参数的大小
// 获取文件大小的接口,上传小文件时,文件类型为:multipart.sectionReadCloser
type Size interface {
	Size() int64
}

// 获取文件信息的接口,上传大文件时,文件类型为: *os.File
type Stat interface {
	Stat() (os.FileInfo, error)
}

	icon, _, err := req.FormFile("icon")
	if statInterface, ok := icon.(Stat); ok {
		fileInfo, err := statInterface.Stat()
		if err == nil {
			if fileInfo.Size() > (maxIconSize) {
				code = errParseFileFailed
				msg = fmt.Sprint("上传文件不要超过", maxIconSize>>20, "M")
				return
			}
		} else if sizeInterface, ok := icon.(Size); ok {
			if sizeInterface.Size() > (maxIconSize) {
				code = errParseFileFailed
				msg = fmt.Sprint("上传文件不要超过", maxIconSize>>20, "M")
				return
			}
		}
	}
	if err != nil {
		code = errParseFileFailed
		msg = err.Error()
		return
	}
	defer icon.Close()

  

posted @ 2017-06-05 17:59  cdongyang  阅读(338)  评论(0编辑  收藏  举报