multipart - The Go Programming Language

Golang

Package multipart

import "mime/multipart"
Overview
Index

Overview ?

Overview ?

Package multipart implements MIME multipart parsing, as defined in RFC 2046.

The implementation is sufficient for HTTP (RFC 2388) and the multipart bodies generated by popular browsers.

Index

type File
type FileHeader
    func (fh *FileHeader) Open() (File, error)
type Form
    func (f *Form) RemoveAll() error
type Part
    func (p *Part) Close() error
    func (p *Part) FileName() string
    func (p *Part) FormName() string
    func (p *Part) Read(d []byte) (n int, err error)
type Reader
    func NewReader(reader io.Reader, boundary string) *Reader
    func (r *Reader) NextPart() (*Part, error)
    func (r *Reader) ReadForm(maxMemory int64) (f *Form, err error)
type Writer
    func NewWriter(w io.Writer) *Writer
    func (w *Writer) Boundary() string
    func (w *Writer) Close() error
    func (w *Writer) CreateFormField(fieldname string) (io.Writer, error)
    func (w *Writer) CreateFormFile(fieldname, filename string) (io.Writer, error)
    func (w *Writer) CreatePart(header textproto.MIMEHeader) (io.Writer, error)
    func (w *Writer) FormDataContentType() string
    func (w *Writer) WriteField(fieldname, value string) error

Package files

formdata.go multipart.go writer.go

type File

type File interface {
    io.Reader
    io.ReaderAt
    io.Seeker
    io.Closer
}

File is an interface to access the file part of a multipart message. Its contents may be either stored in memory or on disk. If stored on disk, the File's underlying concrete type will be an *os.File.

type FileHeader

type FileHeader struct {
    Filename string
    Header   textproto.MIMEHeader
    // contains filtered or unexported fields
}

A FileHeader describes a file part of a multipart request.

func (*FileHeader) Open

func (fh *FileHeader) Open() (File, error)

Open opens and returns the FileHeader's associated File.

type Form

type Form struct {
    Value map[string][]string
    File  map[string][]*FileHeader
}

Form is a parsed multipart form. Its File parts are stored either in memory or on disk, and are accessible via the *FileHeader's Open method. Its Value parts are stored as strings. Both are keyed by field name.

func (*Form) RemoveAll

func (f *Form) RemoveAll() error

RemoveAll removes any temporary files associated with a Form.

type Part

type Part struct {
    // The headers of the body, if any, with the keys canonicalized
    // in the same fashion that the Go http.Request headers are.
    // i.e. "foo-bar" changes case to "Foo-Bar"
    Header textproto.MIMEHeader
    // contains filtered or unexported fields
}

A Part represents a single part in a multipart body.

func (*Part) Close

func (p *Part) Close() error

func (*Part) FileName

func (p *Part) FileName() string

FileName returns the filename parameter of the Part's Content-Disposition header.

func (*Part) FormName

func (p *Part) FormName() string

FormName returns the name parameter if p has a Content-Disposition of type "form-data". Otherwise it returns the empty string.

func (*Part) Read

func (p *Part) Read(d []byte) (n int, err error)

Read reads the body of a part, after its headers and before the next part (if any) begins.

type Reader

type Reader struct {
    // contains filtered or unexported fields
}

Reader is an iterator over parts in a MIME multipart body. Reader's underlying parser consumes its input as needed. Seeking isn't supported.

func NewReader

func NewReader(reader io.Reader, boundary string) *Reader

NewReader creates a new multipart Reader reading from r using the given MIME boundary.

func (*Reader) NextPart

func (r *Reader) NextPart() (*Part, error)

NextPart returns the next part in the multipart or an error. When there are no more parts, the error io.EOF is returned.

func (*Reader) ReadForm

func (r *Reader) ReadForm(maxMemory int64) (f *Form, err error)

ReadForm parses an entire multipart message whose parts have a Content-Disposition of "form-data". It stores up to maxMemory bytes of the file parts in memory and the remainder on disk in temporary files.

type Writer

type Writer struct {
    // contains filtered or unexported fields
}

A Writer generates multipart messages.

func NewWriter

func NewWriter(w io.Writer) *Writer

NewWriter returns a new multipart Writer with a random boundary, writing to w.

func (*Writer) Boundary

func (w *Writer) Boundary() string

Boundary returns the Writer's randomly selected boundary string.

func (*Writer) Close

func (w *Writer) Close() error

Close finishes the multipart message and writes the trailing boundary end line to the output.

func (*Writer) CreateFormField

func (w *Writer) CreateFormField(fieldname string) (io.Writer, error)

CreateFormField calls CreatePart with a header using the given field name.

func (*Writer) CreateFormFile

func (w *Writer) CreateFormFile(fieldname, filename string) (io.Writer, error)

CreateFormFile is a convenience wrapper around CreatePart. It creates a new form-data header with the provided field name and file name.

func (*Writer) CreatePart

func (w *Writer) CreatePart(header textproto.MIMEHeader) (io.Writer, error)

CreatePart creates a new multipart section with the provided header. The body of the part should be written to the returned Writer. After calling CreatePart, any previous part may no longer be written to.

func (*Writer) FormDataContentType

func (w *Writer) FormDataContentType() string

FormDataContentType returns the Content-Type for an HTTP multipart/form-data with this Writer's Boundary.

func (*Writer) WriteField

func (w *Writer) WriteField(fieldname, value string) error

WriteField calls CreateFormField and then writes the given value.