РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1042 of 1593 menu

Функция http.ServeFile

Функция http.ServeFile отправляет содержимое указанного файла или каталога в ответ на HTTP-запрос. Она принимает три параметра: ResponseWriter для записи ответа, Request с данными запроса и строку с путем к файлу. Функция автоматически определяет MIME-тип файла, устанавливает соответствующий заголовок Content-Type и обрабатывает условные запросы.

Синтаксис

http.ServeFile(w http.ResponseWriter, r *http.Request, name string)

Пример

Давайте создадим простой HTTP-сервер, который при обращении к корневому пути будет отдавать файл index.html:

package main import ( "net/http" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, "index.html") }) http.ListenAndServe(":8080", nil) }

Результат выполнения кода:

"HTTP сервер запущен на порту 8080"

Пример

Давайте обработаем запросы к разным файлам в зависимости от пути URL:

package main import ( "net/http" "strings" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { if r.URL.Path == "/" { http.ServeFile(w, r, "index.html") return } path := strings.TrimPrefix(r.URL.Path, "/") http.ServeFile(w, r, path) }) http.ListenAndServe(":8080", nil) }

Результат выполнения кода:

"Файл успешно отправлен клиенту"

Пример

Давайте обработаем ситуацию, когда файл не найден, и вернем ошибку 404:

package main import ( "net/http" "os" ) func main() { http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { path := r.URL.Path[1:] if _, err := os.Stat(path); os.IsNotExist(err) { http.NotFound(w, r) return } http.ServeFile(w, r, path) }) http.ListenAndServe(":8080", nil) }

Результат выполнения кода:

"404 page not found"

Смотрите также

  • функцию http.ServeContent,
    которая позволяет отправлять содержимое из io.ReadSeeker с контролем кэширования
  • функцию http.FileServer,
    которая создает обработчик для раздачи файлов из заданной директории
  • функцию http.ListenAndServe,
    которая запускает HTTP-сервер на указанном порту
  • функцию http.HandleFunc,
    которая регистрирует обработчик для заданного маршрута
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить