goalng ServeContent
时间: 2023-09-26 19:13:59 浏览: 87
`ServeContent` 是 Go 语言标准库中的一个函数,用于将文件内容作为 HTTP 响应主体发送给客户端。可以使用该函数来创建一个简单的静态文件服务器。
该函数的定义如下:
```go
func ServeContent(w ResponseWriter, req *Request, name string, modtime time.Time, content io.ReadSeeker)
```
其中,`w` 是实现了 `ResponseWriter` 接口的对象,`req` 是客户端发送的 HTTP 请求对象,`name` 是要发送的文件名,`modtime` 是文件的修改时间,`content` 是实现了 `ReadSeeker` 接口的对象,用于读取文件内容。
以下是一个简单的使用 `ServeContent` 函数创建静态文件服务器的示例代码:
```go
package main
import (
"log"
"net/http"
"time"
)
func main() {
// 设置静态文件目录
fs := http.FileServer(http.Dir("static"))
// 处理静态文件请求
http.HandleFunc("/static/", func(w http.ResponseWriter, r *http.Request) {
// 获取文件路径
path := r.URL.Path[len("/static/"):]
// 打开文件
file, err := fs.Open(path)
if err != nil {
http.Error(w, err.Error(), http.StatusNotFound)
return
}
defer file.Close()
// 获取文件信息
info, err := file.Stat()
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
// 发送文件内容
http.ServeContent(w, r, info.Name(), info.ModTime(), file)
})
// 启动服务器
log.Printf("Server started at http://localhost:8080")
log.Fatal(http.ListenAndServe(":8080", nil))
}
```