Browse Source

更新单文件

master
453530270@qq.com 2 years ago
parent
commit
222ad19703
  1. 56
      fssc/internal/handler/handler.go
  2. 40
      fssc/internal/util/net.go
  3. 3
      fssc/web/embed.go
  4. 40
      fssc/web/up.tmpl

56
fssc/internal/handler/handler.go

@ -65,7 +65,61 @@ func ReceiveStatus(w http.ResponseWriter, r *http.Request) {
func UpServer(w http.ResponseWriter, r *http.Request) {
switch r.Method {
case http.MethodGet:
fmt.Fprint(w, "UpServer")
// 解析url中传递来的参数
fname := r.URL.Query().Get("f")
// 路径
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 {
Bpath string
Bfile string
}{
Bpath: bpath,
Bfile: bfile,
}
// 文件列表模板
tmpl, err := template.New("up").Parse(web.UpPage)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
err = tmpl.Execute(w, data)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
}
default:
http.Error(w, "Method not allowed", http.StatusMethodNotAllowed)
}

40
fssc/internal/util/net.go

@ -0,0 +1,40 @@
package util
import (
"fmt"
"fssc/config"
"net"
)
// udp 模式发送文件
/*
* sip string 目标服务器
* furl string 文件的路径
*/
func UpdSend(sip string, furl string) {
// 1、获取udp addr
remoteAddr, err := net.ResolveUDPAddr("udp", sip+":9099")
if err != nil {
fmt.Printf("Failed to resolve %s: %v\n", sip, err)
return
}
// 2、 监听端口
conn, err := net.DialUDP("udp", nil, remoteAddr)
if err != nil {
fmt.Printf("Failed to dial %s: %v\n", sip, 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(furl, fmt.Sprintf("http://%s", remoteAddr))
// if err != nil {
// fmt.Printf("Send file to %s error: %s\n", remoteAddr, err)
// }
// }()
}

3
fssc/web/embed.go

@ -9,3 +9,6 @@ var StaticFs embed.FS
//go:embed list.tmpl
var ListPage string
//go:embed up.tmpl
var UpPage string

40
fssc/web/up.tmpl

@ -0,0 +1,40 @@
<!DOCTYPE html>
<html>
<head>
<title>send file to server</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="/static/static/css/bootstrap.css">
<script type="text/javascript" src="/static/static/js/jquery.min.js"></script>
<script type="text/javascript" src="/static/static/js/bootstrap.min.js"></script>
</head>
<body>
<div class="jumbotron"><div>
<div class="container">
<form method="post" action="/upfile">
<div class="form-group">
<div class="input-group">
<input type="hidden" class="form-control" name="bpath" value="{{.Bpath}}" readonly />
</div>
<div class="input-group">
<input type="hidden" class="form-control" name="bfile" value="{{.Bfile}}" readonly />
</div>
<div class="input-group">
<div class="input-group-addon">服务器ip</div>
<input type="text" class="form-control" id="exampleInputAmount" name="sip" placeholder="eg:192.168.66.99">
</div>
</div>
<button type="submit" class="btn btn-primary">Transfer</button>
</form>
</div>
</body>
</html>
Loading…
Cancel
Save