Golang实现web文件共享服务的示例代码
本文主要介绍了Golang实现web文件共享服务的示例代码,分享给大家,具体如下:
很简单,只需要两行代码。
http.Handle("/",http.FileServer(http.Dir("./")))//把当前文件目录作为共享目录
http.ListenAndServe(":8080",nil)
这时候,通过浏览器打开http://ip地址:8080就可以了。
也许这样就完了,但是我为了方便非程序员用户使用,还需要程序自动获取本机的内网ip地址,最后浏览器自动打开这个地址。
获取内网ip地址
funcGetIntranetIp()(r[]string){
addrs,err:=net.InterfaceAddrs()
iferr!=nil{
log.Fatal(err)
}
for_,address:=rangeaddrs{
ifipnet,ok:=address.(*net.IPNet);ok&&!ipnet.IP.IsLoopback(){
ifipnet.IP.To4()!=nil{
r=append(r,ipnet.IP.String())
}
}
}
return
}
本机浏览器自动打开这个地址
loclstr:=fmt.Sprintf("http://%s:8080",ip地址)
cmd:=exec.Command("cmd","/C","start"+loclstr)
cmd.Run()
完整代码
packagemain
import(
"fmt"
"log"
"net"
"net/http"
"os/exec"
"time"
)
funcmain(){
address:=GetIntranetIp()
fmt.Println("本机ip地址列表:")
for_,item:=rangeaddress{
fmt.Println(item)
}
http.Handle("/",http.FileServer(http.Dir("./")))
fmt.Printf("蕊蕊老师文件共享服务开启,监听8080端口\n请使用浏览器打开:http://ip地址:8080,eg:http://%s:8080\n请不要关闭此程序,祝使用愉快\n",address[0])
gofunc(){
time.Sleep(2000)
loclstr:=fmt.Sprintf("http://%s:8080",address[0])
cmd:=exec.Command("cmd","/C","start"+loclstr)
cmd.Run()
}()
iferr:=http.ListenAndServe(":8080",nil);err!=nil{
fmt.Println("err:",err)
}
}
funcGetIntranetIp()(r[]string){
addrs,err:=net.InterfaceAddrs()
iferr!=nil{
log.Fatal(err)
}
for_,address:=rangeaddrs{
ifipnet,ok:=address.(*net.IPNet);ok&&!ipnet.IP.IsLoopback(){
ifipnet.IP.To4()!=nil{
r=append(r,ipnet.IP.String())
}
}
}
return
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。