程序员

91.go服务器文件上传类型检查

2023-02-18  本文已影响0人  厚土火焱

使用go开发服务端上传文件服务,当需要客端采用form表单提交文件的方式时,form表单需要把 enctype 设置为 multipart/form-data 。
如果客端编写疏忽,没有设置,或设置成其他的(一般为application/x-www-form-urlencoded),服务端会不停的报错。
此时,服务端可以在接收到访问时做一下 request.Header 的 Content-Type 判断。
如果不是 multipart/form-data,则判定客端设置错误。
获取 Content-Type 的代码如下:

request.Header.Get("Content-Type")

经测试,
客端为multipart/form-data,获得的结果是

multipart/form-data; boundary=----WebKitFormBoundary0JsnmjkAfS6UaQYa

客端未做设置,获得的结果是

application/x-www-form-urlencoded

完整检测代码

        //-----客端上传文件类型检查 Begin----------------------

        typeArry := strings.Split(request.Header.Get("Content-Type"), ";")
        if len(typeArry) > 0 {
            if "multipart/form-data" == typeArry[0] {
                cofoxPub.LogSysPrintln("logsys", "上传文件Content-Type检查通过")
            } else {
                cofoxPub.CoFoxShowError(errors.New("Content-Type类型不正确"), "应当为multipart/form-data,当前为", typeArry[0])
                fmt.Fprint(writer, "Content-Type类型不正确, 应当为multipart/form-data,当前为", typeArry[0])
                return
            }
        } else {
            cofoxPub.CoFoxShowError(errors.New("Content-Type类型获取失败"), "Content-Type长度为0")
            return
        }
        //-----客端上传文件类型检查 End------------------------
上一篇 下一篇

猜你喜欢

热点阅读