import "mime/multipart"

RFC 2046で定義されている、MIMEマルチパートのパースを実装しています。

この実装は、HTTP (RFC 2388)向けであり、一般に使われているブラウザによって生成されるマルチパートボディをパースするには十分な機能を持っています。

パッケージファイル

multipart.go

Part型

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 map[string]string
    // contains unexported fields
}

(*Part) Close関数

func (bp *Part) Close() os.Error

(*Part) FormName関数

func (p *Part) FormName() string

FormNameは、pが「form-data」型のContent-Dispositionを持つとき、nameパラメータを返します。持たないときは空文字列を返します。

(*Part) Read関数

func (bp *Part) Read(p []byte) (n int, err os.Error)

Readは、パートのボディ(ヘッダの後ろから、次のパートが存在すれば、それの開始前まで)を読み込みます。

Reader型

Readerは、MIMEマルチパートボディのパートのイテレータです。Reader内のパーサーは、必要に応じて入力から読み込みを行います。シークはサポートしていません。

type Reader interface {
    // NextPartは、マルチパート内の次のパート、もしはEOFのとき
    // (nil, nul)を返します。エラーは、内部のReaderによって
    // エラーが報告されたとき、またはトランケートされたとき、
    // 入力形式がおかしいときに返されます。
    NextPart() (*Part, os.Error)
}

NewReader関数

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

NewReaderは、指定したMIMEバウンダリを使用し、rから読み込みを行う新しいマルチパートReaderを作成して返します。