Для того чтобы достать фото из POST запроса, пришедшего на сервер на языке Go, нужно использовать пакет "net/http" для обработки запроса и пакет "mime/multipart" для работы с мультипарт формами.
Вот пример кода, который демонстрирует, как достать фото из POST запроса:
package main import ( "fmt" "log" "net/http" "mime/multipart" ) func main() { http.HandleFunc("/", handleRequest) log.Fatal(http.ListenAndServe(":8080", nil)) } func handleRequest(w http.ResponseWriter, r *http.Request) { if r.Method == "POST" { // Разбираем форму с файлами err := r.ParseMultipartForm(32 << 20) // Размер максимального файла if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } formFile, _, err := r.FormFile("file") // "file" - имя поля файла в форме if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } defer formFile.Close() // Здесь можно сохранить файл на сервере или выполнить с ним нужные действия. // В данном примере просто выводим информацию о файле. fileHeader := make([]byte, 512) _, err = formFile.Read(fileHeader) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } fileContentType := http.DetectContentType(fileHeader) fmt.Fprintf(w, "Content Type: %sn", fileContentType) } }
В этом примере мы создаем HTTP сервер с помощью функции http.ListenAndServe()
. В функции handleRequest
мы проверяем, что метод запроса POST
и затем разбираем мультипарт форму с помощью r.ParseMultipartForm()
функции. Далее, используя r.FormFile()
, мы извлекаем файл из формы по имени поля и сохраняем его в переменную formFile
. В данном примере мы выводим информацию о файле, но вы можете выполнить с ним нужные действия, например, сохранить его на сервере.
Не забудьте указать имя поля файла в форме, которое вы хотите достать, в функции r.FormFile("file")
. Проверьте, что это значение совпадает с именем поля файла в вашем POST запросе.
Если возникнут ошибки при чтении файла или при разборе формы, мы отправляем соответствующие HTTP ошибки (http.StatusBadRequest или http.StatusInternalServerError).
Надеюсь, это поможет вам достать фото из POST запроса в Go!