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

Аватар пользователя Elena Gromova
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
Познакомьтесь с основами Go бесплатно

Похожие вопросы