github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/mime/multipart/writer.go (about)

     1  // Copyright 2011 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  package multipart
     6  
     7  import (
     8  	"github.com/shogo82148/std/io"
     9  	"github.com/shogo82148/std/net/textproto"
    10  )
    11  
    12  // Writerはマルチパートメッセージを生成します。
    13  type Writer struct {
    14  	w        io.Writer
    15  	boundary string
    16  	lastpart *part
    17  }
    18  
    19  // NewWriterは、ランダムな境界を持つ新しいマルチパート [Writer] を返し、wに書き込みます。
    20  func NewWriter(w io.Writer) *Writer
    21  
    22  // Boundaryは [Writer] の境界を返します。
    23  func (w *Writer) Boundary() string
    24  
    25  // SetBoundaryは、[Writer] のデフォルトのランダムに生成された
    26  // 境界セパレータを明示的な値で上書きします。
    27  //
    28  // SetBoundaryはパートが作成される前に呼び出す必要があり、特定のASCII文字のみを
    29  // 含むことができ、非空であり、最大で70バイトの長さでなければなりません。
    30  func (w *Writer) SetBoundary(boundary string) error
    31  
    32  // FormDataContentTypeは、この [Writer] のBoundaryを持つHTTP
    33  // multipart/form-dataのContent-Typeを返します。
    34  func (w *Writer) FormDataContentType() string
    35  
    36  // CreatePartは、提供されたヘッダーを持つ新しいマルチパートセクションを作成します。
    37  // パートのボディは、返された [Writer] に書き込むべきです。
    38  // CreatePartを呼び出した後、以前のパートにはもう書き込むことができません。
    39  func (w *Writer) CreatePart(header textproto.MIMEHeader) (io.Writer, error)
    40  
    41  // CreateFormFileは、[Writer.CreatePart] の便利なラッパーです。これは、
    42  // 提供されたフィールド名とファイル名で新しいform-dataヘッダーを作成します。
    43  func (w *Writer) CreateFormFile(fieldname, filename string) (io.Writer, error)
    44  
    45  // CreateFormFieldは、与えられたフィールド名を使用してヘッダーを作成し、
    46  // [Writer.CreatePart] を呼び出します。
    47  func (w *Writer) CreateFormField(fieldname string) (io.Writer, error)
    48  
    49  // WriteFieldは [Writer.CreateFormField] を呼び出し、その後で与えられた値を書き込みます。
    50  func (w *Writer) WriteField(fieldname, value string) error
    51  
    52  // Closeはマルチパートメッセージを終了し、終了境界線を出力に書き込みます。
    53  func (w *Writer) Close() error