В Go существует несколько способов сохранить картинку, полученную с фронтенда, в папку на сервере. Один из самых простых способов - использовать пакет net/http
для принятия запроса, а затем пакет io/ioutil
для сохранения файла.
Вот пример кода, который позволяет сохранить картинку, полученную с фронтенда, в папку на сервере:
package main import ( "io/ioutil" "net/http" "os" ) func uploadImage(w http.ResponseWriter, r *http.Request) { file, _, err := r.FormFile("image") // Передаваемое поле должно называться "image" if err != nil { http.Error(w, err.Error(), http.StatusBadRequest) return } defer file.Close() // Создаем файл на сервере tempFile, err := ioutil.TempFile("", "uploaded-image-") if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } defer tempFile.Close() // Читаем данные из присланного файла и записываем в созданный файл fileBytes, err := ioutil.ReadAll(file) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } tempFile.Write(fileBytes) // Далее, если нужно, можно переместить созданный файл в требуемую папку err = os.Rename(tempFile.Name(), "/path/to/destination/folder/image.jpg") if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } // Отправляем ответ об успешной загрузке w.Write([]byte("Image uploaded successfully")) } func main() { http.HandleFunc("/upload", uploadImage) http.ListenAndServe(":8080", nil) }
Обратите внимание, что код ожидает, что клиент будет отправлять файл с именем поля "image". Если вы ожидаете другое имя поля, измените соответствующую строку в коде:
file, _, err := r.FormFile("image")
Также обратите внимание, что путь к папке назначения должен быть изменен в следующей строке:
err = os.Rename(tempFile.Name(), "/path/to/destination/folder/image.jpg")
Замените "/path/to/destination/folder/image.jpg"
на путь к желаемой папке и имени файла.
Это лишь один из множества способов сохранения и обработки картинок в Go. Имейте в виду, что код этого примера не является полным и не включает обработку возможных ошибок, что рекомендуется для реального применения.