コンテンツにスキップ

ファイルアップロード

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ドキュメントを参照してください。

サブページ