golang实现局域网内简单文件服务

linux上没qq,手机和电脑之间传输文件就变得异常困难。要么从充电器插头上拔下数据线插到电脑上,手机开启usb文件传输功能,要么蓝牙传输,传输速度不是一般的慢,10M的图片一分钟才传完。懒得在网上找类似功能的软件就手写了一个。速度很快。

package main
import (
    "fmt"
    "net/http"
    "io/ioutil"
    "net"
    "os"
)
func check(e error) {
    if e!=nil{
        fmt.Println(e)
    }
}

func main() {
    fmt.Println("请访问下面的链接:")
    showip()
http.HandleFunc("/", uploadFileHandler)
http.Handle("/file/",http.StripPrefix("/file/",http.FileServer(http.Dir("/home/banapy"))))
http.ListenAndServe(":8080",nil)
}
func uploadFileHandler(w http.ResponseWriter,r *http.Request){
/**/
    fmt.Fprintln(w,`



    
    多平台局域网内文件互传

 
    

多平台局域网内文件互传







文件下载 `) if r.Method=="POST"{ file, handler, err := r.FormFile("fileUpload") //name的字段 if err != nil { fmt.Println(err) return } defer file.Close() fileBytes, err := ioutil.ReadAll(file) check(err) newFile, err := os.Create("/home/banapy/tmp/" + handler.Filename) check(err) defer newFile.Close() if _, err := newFile.Write(fileBytes); err != nil { check(err) return } fmt.Println(" upload successfully:" +"/home/banapy/tmp/" + handler.Filename ) w.Write([]byte("SUCCESS")) } } func showip() { addrs, err := net.InterfaceAddrs() if err != nil { fmt.Println(err) os.Exit(1) } for _, address := range addrs { // 检查ip地址判断是否回环地址 if ipnet, ok := address.(*net.IPNet); ok && !ipnet.IP.IsLoopback() { if ipnet.IP.To4() != nil { fmt.Println(ipnet.IP.String()+":8080") } } } }

注意:直接复制代码可能不行,要配置个接受文件的/home/username/tmp目录和展示文件的目录http.Dir("/home/banapy")

你可能感兴趣的:(golang实现局域网内简单文件服务)