Package multipart

import "mime/multipart"
Overview
Index
Examples

Overview ▾

包多部分实现了RFC 2046中定义的MIME多部分解析.

对于HTTP(RFC 2388)和流行的浏览器生成的多部分主体,该实现就足够了.

Variables

如果消息表单数据太大而无法处理,则ReadForm返回ErrMessageTooLarge.

var ErrMessageTooLarge = errors.New("multipart: message too large")

type File

文件是访问多部分消息的文件部分的接口. 它的内容可以存储在内存中或磁盘上. 如果存储在磁盘上,则文件的基础具体类型将是* os.File.

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

type FileHeader

FileHeader描述了多部分请求的文件部分.

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

func (*FileHeader) Open

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

打开打开并返回FileHeader的关联文件.

type Form

表单是解析的多部分表单. 它的文件部分存储在内存或磁盘中,并且可以通过* FileHeader的Open方法访问. 其值部分存储为字符串. 两者均由字段名称键入.

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

func (*Form) RemoveAll

func (f *Form) RemoveAll() error

RemoveAll删除与表单关联的所有临时文件.

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.
    // For example, "foo-bar" changes case to "Foo-Bar"
    //
    // As a special case, if the "Content-Transfer-Encoding" header
    // has a value of "quoted-printable", that header is instead
    // hidden from this map and the body is transparently decoded
    // during Read calls.
    Header textproto.MIMEHeader
    // contains filtered or unexported fields
}

func (*Part) Close

func (p *Part) Close() error

func (*Part) FileName

func (p *Part) FileName() string

FileName返回部件的Content-Disposition标头的filename参数.

func (*Part) FormName

func (p *Part) FormName() string

如果p的Content-Disposition类型为" form-data",则FormName返回name参数. 否则,它返回空字符串.

func (*Part) Read

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

读取在其标题之后以及下一个部分(如果有)开始之前读取部分的主体.

type Reader

Reader是MIME多部分主体中各个部分的迭代器. 读者的基础解析器根据需要使用其输入. 不支持寻找.

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

func NewReader

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

NewReader使用给定的MIME边界从r创建一个新的多部分阅读器.

通常从消息的" Content-Type"标头的" boundary"参数获得边界. 使用mime.ParseMediaType解析此类标头.

Example

Part "one": "A section"
Part "two": "And another"

func (*Reader) NextPart

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

NextPart返回多部分中的下一个部分或错误. 没有更多零件时,将返回错误io.EOF.

func (*Reader) ReadForm

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

ReadForm解析一条完整的多部分消息,该消息的各个部分的Content-Disposition为" form-data". 它在内存中最多存储maxMemory字节+ 10MB(保留给非文件部分). 无法存储在内存中的文件部分将以临时文件的形式存储在磁盘上. 如果所有非文件部分都无法存储在内存中,则返回ErrMessageTooLarge.

type Writer

Writer生成多部分消息.

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

func NewWriter

func NewWriter(w io.Writer) *Writer

NewWriter返回带有随机边界的新的多部分Writer,写入w.

func (*Writer) Boundary

func (w *Writer) Boundary() string

边界返回作家的边界.

func (*Writer) Close

func (w *Writer) Close() error

单击"关闭"将完成多部分消息,并将边界后尾行写入输出.

func (*Writer) CreateFormField

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

CreateFormField使用给定的字段名称使用标头调用CreatePart.

func (*Writer) CreateFormFile

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

CreateFormFile是CreatePart的便利包装. 它使用提供的字段名称和文件名创建一个新的表单数据标题.

func (*Writer) CreatePart

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

CreatePart使用提供的标题创建一个新的多部分节. 零件的主体应写入返回的Writer. 调用CreatePart之后,任何先前的部分可能不再被写入.

func (*Writer) FormDataContentType

func (w *Writer) FormDataContentType() string

FormDataContentType返回具有此编写者边界的HTTP multipart / form-data的Content-Type.

func (*Writer) SetBoundary 1.1

func (w *Writer) SetBoundary(boundary string) error

SetBoundary使用显式值覆盖Writer的默认随机生成的边界分隔符.

必须在创建任何部分之前调用SetBoundary,它只能包含某些ASCII字符,并且必须为非空且最长为70个字节.

func (*Writer) WriteField

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

WriteField调用CreateFormField,然后写入给定值.

by  ICOPY.SITE