用go语言实现文件上传功能
所用模块: fmt, io, os, net
发送端 send.go
// 发送端 send.go
package main
import (
"fmt"
"io"
"net"
"os"
)
// 发送文件
func sendFile(file *os.File, client net.Conn) (err error) {
err = nil
buf := make([]byte, 1024*4)
var n int
for {
n, err = file.Read(buf)
if err != nil {
if err == io.EOF {
return nil
} else {
fmt.Println("file.Read err:", err)
}
return
}
_, err = client.Write(buf[:n])
if err != nil {
fmt.Println("client.Write err:", err)
return err
}
}
return
}
func main() {
// 1.接收输入文件名
fmt.Println("请输要发送的文件名:")
var filePath string
var f *os.File
var err error
for {
fmt.Scan(&filePath)
// 2.打开文件
f, err = os.Open(filePath)
if err != nil {
fmt.Println("Open err:", err)
fmt.Println("请输要发送的文件名:")
}
break
}
defer f.Close()
// 3.发