package main
import (
"flag"
"io/ioutil"
"log"
"net/http"
"os"
"strconv"
)
const DEFAULTPORT = 7788
func handerGetFile(w http.ResponseWriter, r *http.Request) {
r.ParseForm() //解析参数,默认是不会解析的
log.Println("Recv:", r.RemoteAddr)
pwd,_ := os.Getwd()
des:= pwd + string(os.PathSeparator) + r.URL.Path[1:len(r.URL.Path)]
desStat,err := os.Stat(des)
if err != nil{
log.Println("File Not Exit", des)
http.NotFoundHandler().ServeHTTP(w, r)
}else if(desStat.IsDir()){
log.Println("File Is Dir", des)
http.NotFoundHandler().ServeHTTP(w, r)
}else{
fileData, err := ioutil.ReadFile(des)
if err != nil{
log.Println("Read File Err:", err.Error())
}else{
log.Println("Send File:", des)
w.Write(fileData)
}
}
}
func main() {
port := flag.Int("p", DEFAULTPORT, "Set The Http Port")
flag.Parse()
pwd,_ := os.Getwd()
log.Printf("Listen On Port:%d pwd:%s\n", *port, pwd)
http.HandleFunc("/", handerGetFile)
err := http.ListenAndServe(":" + strconv.Itoa(*port), nil)
if nil != err{
log.Fatalln("Get Dir Err", err.Error())
}
}