/
Вопросы и ответы
/
Go
/

golang как подгрузить файл на сервер

golang как подгрузить файл на сервер

2 года назад

Nikolai Gagarinov

Ответы

0

Для загрузки файла на сервер с использованием 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"".

год назад

Elena Gromova