douwu8251 2018-02-01 07:36
浏览 96
已采纳

在Go中解析多部分表单时出现错误

I am trying to parse a multipart form in Go. I followed the tutorial for mimepart and still not able to get the NextPart. Please help.

Code:

package main

import (
    "fmt"
    "mime/multipart"
    "strings"
)


var testHead = `multipart/related; charset=utf-8; boundary="example-1"; type="text/xml"; start="<a@b.c>"`

var testBody3 = `--example-1
Content-Type: a/b
Content-ID: <a@b.c>
Life?
--example-1
Content-Type: b/c
Content-Transfer-Encoding: Base64
Content-ID: <b@c.d>
RG9uJ3QgdGFsayB0byBtZSBhYm91dCBsaWZlIQ==
--example-1--`

func main() {
    var boundary string
    var start string
    result := strings.Split(testHead, ";")
    for i := range result {
        if strings.Contains(result[i], "boundary=") {
            boundary = strings.Split(result[i], "boundary=")[1]
        }
        if strings.Contains(result[i], "start=") {
            start = strings.Split(result[i], "start=")[1]
        }
    }
    fmt.Println(start, boundary)

    r := strings.NewReader(testBody3)

    var nr *multipart.Reader = multipart.NewReader(r, boundary)
    fmt.Println("NEW READER ->", nr)

    p, err := nr.NextPart()
    fmt.Println(p, err)


}

Output:

"<a@b.c>" "example-1"    
NEW READER -> &{0xc04209a000 <nil> 0 [13 10] [13 10 45 45 34 101 120 97 109 112 108 101 45 49 34] [45 45 34 101 120 97 109 112 108 101 45 49 34 45 45] [45 45 34 101 120 97 109 112 108 101 45 49 34]}
<nil> multipart: NextPart: EOF
  • 写回答

1条回答 默认 最新

  • dongmei8760 2018-02-01 07:41
    关注

    The issue is that your boundary is specified to be "example-1" when it should be example-1 (without quotes). You can parse content types by using mime.ParseMediaType.

    package main
    
    import (
        "fmt"
        "mime"
    )
    
    var testHead = `multipart/related; charset=utf-8; boundary="example-1"; type="text/xml"; start="<a@b.c>"`
    
    func main() {
        _, params, _ := mime.ParseMediaType(testHead)
        fmt.Println(params["boundary"])
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 请求分析基于spring boot+vue的前后端分离的项目
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥200 关于#c++#的问题,请各位专家解答!网站的邀请码
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?