Browse Source

修复单文件获取路径失败

master
453530270@qq.com 2 years ago
parent
commit
c00a06d79c
  1. BIN
      fssc/fssc
  2. 93
      fssc/internal/handler/handler.go
  3. 2
      fssc/main.go
  4. 9
      fssc/web/up.tmpl

BIN
fssc/fssc

Binary file not shown.

93
fssc/internal/handler/handler.go

@ -69,45 +69,14 @@ func UpServer(w http.ResponseWriter, r *http.Request) {
fname := r.URL.Query().Get("f") fname := r.URL.Query().Get("f")
// 路径 // 路径
fpath := r.URL.Query().Get("p") fpath := r.URL.Query().Get("p")
// 需要对他们进行base64解码
bpath := util.Base64dec(fpath)
bfile := util.Base64dec(fname)
// // 发送文件对方
// // 创建udp 渠道发送数据
// // 1、获取udp addr
// remoteAddr, err := net.ResolveUDPAddr("udp", serip[0]+":9099")
// if err != nil {
// fmt.Printf("Failed to resolve %s: %v\n", serip[0], err)
// return
// }
// // 2、 监听端口
// conn, err := net.DialUDP("udp", nil, remoteAddr)
// if err != nil {
// fmt.Printf("Failed to dial %s: %v\n", serip[0], err)
// return
// }
// defer conn.Close()
// // 3、在端口发送数据
// message := fmt.Sprintf("%s%s%s", config.G.DeviceName, "|", "sender")
// // 向链接通道发送数据 数据包头
// conn.Write([]byte(message))
// // 发送文件
// go func() {
// err := transfer.SendFiles(ziprl, fmt.Sprintf("http://%s", remoteAddr))
// if err != nil {
// fmt.Printf("Send file to %s error: %s\n", remoteAddr, err)
// }
// }()
// // 页面上显示
// fmt.Fprintf(w, "File:%s\\/%s,been sent successfully.", bpath, bfile)
// fmt.Fprint(w, "debug:"+bpath+fname)
// 文件列表模板 // 文件列表模板
data := struct { data := struct {
Bpath string Bpath string
Bfile string Bfile string
}{ }{
Bpath: bpath, Bpath: fpath,
Bfile: bfile, Bfile: fname,
} }
// 文件列表模板 // 文件列表模板
tmpl, err := template.New("up").Parse(web.UpPage) tmpl, err := template.New("up").Parse(web.UpPage)
@ -126,6 +95,62 @@ func UpServer(w http.ResponseWriter, r *http.Request) {
} }
// 处理单文件同步
func Supfile(w http.ResponseWriter, r *http.Request) {
r.ParseForm()
// loop
// for k, v := range r.Form {
// fmt.Println("key:%s,value:%s", k, v)
// }
// 服务器ip地址
serip := r.Form["sip"]
if serip[0] == "" {
http.Error(w, "remote server ip is blank!", http.StatusInternalServerError)
return
}
// 文件名
sbfile := r.Form["bfile"]
// 文件路径
sbpath := r.Form["bpath"]
// 需要对他们进行base64解码
bpath := util.Base64dec(sbpath[0])
bfile := util.Base64dec(sbfile[0])
// 替换 反斜杠
bbpath := strings.Replace(bpath, "/", "\\", -1)
// 拼装, 文件的实际地址
ziprl := filepath.Join(bbpath, "/", bfile)
// 1、获取udp addr
remoteAddr, err := net.ResolveUDPAddr("udp", serip[0]+":9099")
if err != nil {
fmt.Printf("Failed to resolve %s: %v\n", serip[0], err)
return
}
// 2、 监听端口
conn, err := net.DialUDP("udp", nil, remoteAddr)
if err != nil {
fmt.Printf("Failed to dial %s: %v\n", serip[0], err)
return
}
defer conn.Close()
// 3、在端口发送数据
message := fmt.Sprintf("%s%s%s", config.G.DeviceName, "|", "sender")
// 向链接通道发送数据 数据包头
conn.Write([]byte(message))
// 发送文件
go func() {
err := transfer.SendFiles(ziprl, fmt.Sprintf("http://%s", remoteAddr))
if err != nil {
fmt.Printf("Send file to %s error: %s\n", remoteAddr, err)
}
}()
// 页面上显示
fmt.Fprintf(w, "File:%s\\/%s,been sent successfully.", sbfile, sbpath)
fmt.Fprintf(w, "deubg.....")
}
// 文件服务 // 文件服务
func FileServerHandler(w http.ResponseWriter, r *http.Request) { func FileServerHandler(w http.ResponseWriter, r *http.Request) {
currentPath := config.G.FilePath currentPath := config.G.FilePath

2
fssc/main.go

@ -40,6 +40,8 @@ func sendClient() error {
http.HandleFunc("/download/", handler.FileServerHandler) http.HandleFunc("/download/", handler.FileServerHandler)
// 文件更新包 // 文件更新包
http.HandleFunc("/up", handler.UpServer) http.HandleFunc("/up", handler.UpServer)
// 传送单文件
http.HandleFunc("/sup", handler.Supfile)
// udp 传送文件 // udp 传送文件
http.HandleFunc("/sendZip", handler.SendZip) http.HandleFunc("/sendZip", handler.SendZip)

9
fssc/web/up.tmpl

@ -13,21 +13,20 @@
<div class="container"> <div class="container">
<form method="post" action="/upfile"> <form method="post" action="/sup">
<div class="form-group"> <div class="form-group">
<div class="input-group"> <div class="input-group">
<input type="hidden" class="form-control" name="bpath" value="{{.Bpath}}" readonly /> <input type="hidden" class="form-control" name="bpath" value="{{.Bpath}}" />
</div> </div>
<div class="input-group"> <div class="input-group">
<input type="hidden" class="form-control" name="bfile" value="{{.Bfile}}" readonly /> <input type="hidden" class="form-control" name="bfile" value="{{.Bfile}}" />
</div> </div>
<div class="input-group"> <div class="input-group">
<div class="input-group-addon">服务器ip</div> <div class="input-group-addon">服务器ip</div>
<input type="text" class="form-control" id="exampleInputAmount" name="sip" placeholder="eg:192.168.66.99"> <input type="text" class="form-control" name="sip" placeholder="eg:192.168.66.99">
</div> </div>
</div> </div>
<button type="submit" class="btn btn-primary">Transfer</button> <button type="submit" class="btn btn-primary">Transfer</button>

Loading…
Cancel
Save