multipart.NewReader 后无输出

这可能非常简单,但到目前为止,谷歌搜索还没有找到答案。近 100% 的代码来自此处的文档: https ://golang.org/pkg/mime/multipart/#example_NewReader


问题是我无法在for循环后打印任何内容,我尝试关闭任何需要关闭的内容(请参阅注释代码)但无法弄清楚那是什么。


  package main


    import (

    "fmt"

    "io"

    "io/ioutil"

    "log"

    "mime"

    "mime/multipart"

    "net/mail"

    "strings"

)


func main() {

    msg := &mail.Message{

        Header: map[string][]string{

            "Content-Type": {"multipart/mixed; boundary=foo"},

        },

        Body: strings.NewReader(

            "--foo\r\nFoo: one\r\n\r\nA section\r\n" +

                "--foo\r\nFoo: two\r\n\r\nAnd another\r\n" +

                "--foo--\r\n"),

    }

    mediaType, params, err := mime.ParseMediaType(msg.Header.Get("Content-Type"))

    if err != nil {

        log.Fatal(err)

    }

    if strings.HasPrefix(mediaType, "multipart/") {

        mr := multipart.NewReader(msg.Body, params["boundary"])

        for {

            p, err := mr.NextPart()

            if err == io.EOF {

                return

            }

            if err != nil {

                log.Fatal(err)

            }

            slurp, err := ioutil.ReadAll(p)

            if err != nil {

                log.Fatal(err)

            }

            fmt.Printf("Part %q: %q\n", p.Header.Get("Foo"), slurp)

            // p.Close()


        }

        // mr.Close()

        // mr.Interface().(io.Closer).Close()

        // ioutil.NopCloser(mr)


    }


    // This does not print

    fmt.Printf("Test: %s\n", "asdfasdf")

    fmt.Println("Test")


}

我错过了什么?我将如何解决追踪我丢失的问题的问题?


温温酱
浏览 117回答 1
1回答

手掌心

您目前没有办法for不返回就退出,这将使您也退出该功能。看起来你想改变 if err == io.EOF {       return  }到 if err == io.EOF {       break  }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go