本文将介绍使用Go语言来开发一个简单的Web服务器,其中将包括文件上传和下载功能。
首先,我们需要编写一个名为server.go
的文件,它将包含我们的Go语言Web服务器的代码。
package main
import (
"net/http"
)
func main() {
// 设置路由
http.HandleFunc("/", root)
// 启动服务
http.ListenAndServe(":8080", nil)
}
func root(w http.ResponseWriter, req *http.Request) {
// 根路由,输出Hello, World!
w.Write([]byte("Hello, World!"))
}
上面的代码中,我们导入了net/http
包,它包含了Go语言的网络服务器所需的一切。在main
函数中,我们设置了路由,并且启动了一个HTTP服务器,在root
函数中,我们返回了一个简单的字符串Hello, world!
。
文件上传功能可以使用Go语言原生的io/ioutil
库来实现。
package main
import (
"io/ioutil"
"net/http"
)
// 新增upload函数
func upload(w http.ResponseWriter, req *http.Request) {
// 读取请求文件
file, _, err := req.FormFile("uploadFile")
if err != nil {
w.Write([]byte(err.Error()))
return
}
defer file.Close()
// 将文件存入到服务器指定位置
data, err := ioutil.ReadAll(file)
if err != nil {
w.Write([]byte(err.Error()))
return
}
err = ioutil.WriteFile("./uploads/upload.dat", data, 0666)
if err != nil {
w.Write([]byte(err.Error()))
return
}
w.Write([]byte("文件上传成功!"))
}
func main() {
http.HandleFunc("/", root)
// 新增upload路由
http.HandleFunc("/upload", upload)
http.ListenAndServe(":8080", nil)
}
func root(w http.ResponseWriter, req *http.Request) {
// 返回上传表单
html := ``
w.Write([]byte(html))
}
上面的代码中,我们新增了一个upload
函数,它会读取上传的文件,然后将其存放到服务器指定位置。同时,我们还在root
函数中添加了一个上传表单,以便用户可以上传文件。
文件下载功能也可以使用Go语言的net/http
包来实现。
package main
import (
"io"
"net/http"
)
// 新增download函数
func download(w http.ResponseWriter, req *http.Request) {
// 设置文件头
w.Header().Add("Content-Disposition", "attachment; filename=file.dat")
w.Header().Add("Content-Type", "application/octet-stream")
// 读取文件内容
file, err := ioutil.ReadFile("./uploads/upload.dat")
if err != nil {
w.Write([]byte(err.Error()))
return
}
// 返回文件内容
io.WriteString(w, string(file))
}
func main() {
http.HandleFunc("/", root)
http.HandleFunc("/upload", upload)
// 新增download路由
http.HandleFunc("/download", download)
http.ListenAndServe(":8080", nil)
}
func root(w http.ResponseWriter, req *http.Request) {
html := `
下载文件`
w.Write([]byte(html))
}
上面的代码中,我们新增一个download
函数,它会设置文件头,读取文件内容,并且将文件内容返回给客户端,同时,我们还在root
函数中添加一个链接,用于访问download
函数。
本文介绍了如何使用Go语言开发一个Web服务器,并在其中添加文件上传和下载功能。通过本文,你应该对Go语言开发Web服务器有了更深入的了解,也可以尝试自己去实现更多的功能,让网站更加完善。