Я пытаюсь захватить массив значений Post из HTML-формы с помощью Go / Gin Gonic - в PHP я бы использовал что-то вроде:
<form method="POST" enctype="multipart/form-data" action="mygo">
<input type=hidden name="emails[]" value="[email protected]">
<input type=hidden name="emails[]" value="[email protected]">
<input type=hidden name="emails[]" value="[email protected]">
</form>
Однако, похоже, это не работает с Gin Gonic (или Go, если на то пошло).
Я также пробовал:
<form method="POST" enctype="multipart/form-data" action="mygo">
<input type=hidden name="emails" value="[email protected]">
<input type=hidden name="emails" value="[email protected]">
<input type=hidden name="emails" value="[email protected]">
</form>
Как и везде, предполагается, что это приведет к возврату среза c.PostForm("emails")
. Однако на практике кажется, что это вместо этого возвращает последнее значение в виде строки :(
Интересно, что c.Request.PostForm
возвращает пустую карту, даже если c.Request.ParseForm()
вызывается первым. Что я делаю неправильно?
Форма перехода:
func main() {
// ...
router.POST("mygo",parseFunc)
}
func mygo(c *gin.Context) {
c.Request.ParseForm()
log.Printf("%v",c.Request.PostForm["emails"]) // ""
log.Printf("%v",c.PostForm("emails") // "[email protected]"
}
Request.Form
илиRequest.PostForm
. Если их там нет, покажите минимальный воспроизводимый пример. Например, форма, которую вы показываете, будет отправлена через GET на тот же URL-адрес, который сгенерировал форму. - person JimB   schedule 11.10.2016enctype="multipart/form-data"
.. Технически я не думаю, что мне нужно, чтобы моя форма была составной, и если бы я это сделал, я бы просто означает вызовParseMultipartForm
, а неParseForm
-ParseMultipartForm
, однако, вызывается, когда я вызываюc.PostForm
с помощью gonic, но похоже, что метод gonic вручную возвращает только первое значение - проверю и обновлю. - person BadPirate   schedule 12.10.2016http.Request
. - person JimB   schedule 12.10.2016