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

http://golang.org/pkg/mime/multipart/#Reader.NextPart

http://golang.org/pkg/mime/multipart/#Reader.ReadForm

Advertisement