Golang mime/multipart.NewReader(), Reader.NextPart() and Reader.ReadForm() functions example
package mime/multipart
Golang mime/multipart.NewReader(), Reader.NextPart() and Reader.ReadForm() functions usage example.
Code example modified from http://golang.org/pkg/mime/multipart/#NewReader
package main
import (
"fmt"
"io"
"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)
}
form, err := mr.ReadForm(200000)
if err != nil {
log.Fatal(err)
}
fmt.Printf("Part filename : %s\n", form.Value)
fmt.Printf("Part form name : %s\n", p.FormName())
fmt.Printf("For value : %s\n", form.Value)
}
}
}
References :
http://golang.org/pkg/mime/multipart/#NewReader
Advertisement
Something interesting
Tutorials
+10.9k Nginx : TLS 1.2 support
+41.4k Golang : Convert string to array/slice
+18.4k Golang : Read binary file into memory
+18k Golang : Get all upper case or lower case characters from string example
+5.4k How to check with curl if my website or the asset is gzipped ?
+6.6k Golang : Warp text string by number of characters or runes example
+12.1k Golang : Pagination with go-paginator configuration example
+9.1k Golang : Simple histogram example
+6.1k Golang : Dealing with backquote
+6.4k CodeIgniter : form input set_value cause " to become & quot
+22.7k Golang : Strings to lowercase and uppercase example
+30k Golang : Get time.Duration in year, month, week or day