golang как подгрузить файл на сервер
Ответы
Elena Gromova
23 сентября 2024
Для загрузки файла на сервер с использованием Go (Golang) можно использовать стандартную библиотеку net/http для создания HTTP-обработчика, который будет принимать загружаемые файлы.
Пример кода для создания HTTP-сервера, который принимает файлы и сохраняет их на сервере:
package main
import (
""fmt""
""io""
""net/http""
""os""
)
func uploadFile(w http.ResponseWriter, r *http.Request) {
// Проверяем метод запроса
if r.Method != ""POST"" {
http.Error(w, ""Метод не поддерживается"", http.StatusMethodNotAllowed)
return
}
// Получаем файл из формы
file, handler, err := r.FormFile(""file"")
if err != nil {
http.Error(w, ""Ошибка при получении файла"", http.StatusInternalServerError)
return
}
defer file.Close()
// Создаем файл на сервере
dst, err := os.Create(""uploaded_files/"" + handler.Filename)
if err != nil {
http.Error(w, ""Ошибка при создании файла на сервере"", http.StatusInternalServerError)
return
}
defer dst.Close()
// Копируем содержимое файла на сервер
if _, err = io.Copy(dst, file); err != nil {
http.Error(w, ""Ошибка при копировании файла"", http.StatusInternalServerError)
return
}
// Возвращаем сообщение об успешной загрузке файла
fmt.Fprintf(w, ""Файл %s успешно загружен"", handler.Filename)
}
func main() {
// Устанавливаем обработчик для загрузки файла
http.HandleFunc(""/upload"", uploadFile)
// Запускаем HTTP-сервер на порту 8080
fmt.Println(""Сервер запущен на порту 8080"")
http.ListenAndServe("":8080"", nil)
}
В этом примере мы создаем HTTP-обработчик uploadFile, который получает файл из формы запроса и сохраняет его на сервере в папку uploaded_files. Мы устанавливаем этот обработчик для пути /upload и запускаем HTTP-сервер на порту 8080.
Чтобы загрузить файл на сервер, вы можете отправить POST-запрос на адрес http://localhost:8080/upload с файлом в поле формы с именем ""file"".
0
0