ファイルアップロード
Ginではmultipartファイルアップロードを簡単に処理できます。フレームワークはアップロードされたファイルを受信するためのgin.Context上の組み込みメソッドを提供しています:
c.FormFile(name)— フォームフィールド名で単一のファイルをリクエストから取得します。c.MultipartForm()— multipartフォーム全体をパースし、アップロードされたすべてのファイルとフィールド値にアクセスできます。c.SaveUploadedFile(file, dst)— 受信したファイルをディスク上の指定パスに保存する便利なメソッドです。
メモリ制限
Ginはrouter.MaxMultipartMemoryを通じて、multipartフォームのパースにデフォルトで32 MiBのメモリ制限を設定しています。この制限内のファイルはメモリにバッファされ、それを超えるものはディスク上の一時ファイルに書き込まれます。アプリケーションのニーズに合わせてこの値を調整できます:
router := gin.Default()// 制限を8 MiBに下げるrouter.MaxMultipartMemory = 8 << 20 // 8 MiBセキュリティに関する注意
クライアントが報告するファイル名(file.Filename)は信頼すべきではありません。ファイルシステム操作で使用する前に、必ずサニタイズまたは置換してください。詳細についてはMDNのContent-Dispositionドキュメントを参照してください。
サブページ
- 単一ファイル — リクエストごとに単一のファイルをアップロードして保存します。
- 複数ファイル — 1回のリクエストで複数のファイルをアップロードして保存します。
- アップロードサイズの制限 —
http.MaxBytesReaderを使用してアップロードサイズを制限します。