go - 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")
}
我错过了什么?我将如何解决追踪我丢失的东西的问题?
解决方案
您目前无法在for
不返回的情况下退出,这也会使您退出该功能。看起来你想改变
if err == io.EOF {
return
}
至
if err == io.EOF {
break
}
推荐阅读
- javascript - 如何使数字键盘除键充当制表符,数字键盘小数充当退格键
- swift - JSON 将 UUID 字符串解码为 UUID 对象
- c++ - 给模板参数包起别名
- python - 将系列元素转换为int
- oracle - 光标到查询语句
- python-3.x - 从文件中读取会引发 Python 中的 IndexError
- python-3.x - Pandas:保存在两个数据框中具有相同列名的独立文件
- c++ - std::list 中的迭代器感知对象
- java - 重置地图(删除并在下一次放置时重置)密钥到期时的值
- java - 即使成功绘制,从 Firebase 数据库中提取的数据也无法存储在变量中