GO搭建简单HTPP文件下载服务器

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())
	}
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值