Перейти к содержимому

Загрузка файлов

Gin позволяет легко обрабатывать multipart-загрузку файлов. Фреймворк предоставляет встроенные методы в gin.Context для получения загруженных файлов:

  • c.FormFile(name) — Получает один файл из запроса по имени поля формы.
  • c.MultipartForm() — Разбирает всю multipart-форму, предоставляя доступ ко всем загруженным файлам и значениям полей.
  • c.SaveUploadedFile(file, dst) — Удобный метод, который сохраняет полученный файл по указанному пути на диске.

Ограничение памяти

Gin устанавливает ограничение памяти по умолчанию 32 МиБ для разбора multipart-форм через router.MaxMultipartMemory. Файлы в пределах этого лимита буферизуются в памяти; всё, что превышает лимит, записывается во временные файлы на диске. Вы можете настроить это значение под нужды вашего приложения:

router := gin.Default()
// Lower the limit to 8 MiB
router.MaxMultipartMemory = 8 << 20 // 8 MiB

Замечание о безопасности

Имя файла, сообщённое клиентом (file.Filename), не должно использоваться без проверки. Всегда очищайте или заменяйте его перед использованием в операциях с файловой системой. Подробнее см. документацию Content-Disposition на MDN.

Подстраницы