Ai
1 Star 0 Fork 0

lurenjia/file_client_go

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
common.go 2.08 KB
一键复制 编辑 原始数据 按行查看 历史
lurenjia 提交于 2022-08-31 10:18 +08:00 . 1
// Package client
// @program: file_client_go
// @author: ygt
// @create: 2022/8/17 14:52
package client
import (
"fmt"
"log"
"math"
"net"
"net/http"
"net/url"
"os"
"path/filepath"
"strconv"
"strings"
)
// 获取文件原信息
func getFileMetadata(file string) (bool, string, int64) {
stat, err := os.Stat(file)
if err != nil {
log.Println("open file error:", err)
return false, "", 0
}
return true, stat.Name(), stat.Size()
}
// 检查路径
func checkPath(path string) (bool, string) {
d, err := os.Stat(path)
if os.IsNotExist(err) {
// 不存在
err = os.MkdirAll(path, os.ModePerm)
if os.IsPermission(err) {
return false, "无创建目录权限"
}
if err != nil {
return false, "创建文件夹失败"
}
if err == nil {
return true, path
}
}
if !d.IsDir() {
// 存在,是文件
dir, _ := filepath.Split(path)
return true, dir
}
return true, path
}
// 计算总分片数
func getTotalChunks(size int64) float64 {
var totalChunks float64
if size < chunkSize {
totalChunks = 1
} else {
num0, _ := strconv.ParseFloat(fmt.Sprintf("%.2f", float64(size)/float64(chunkSize)), 64)
totalChunks = math.Ceil(num0)
}
return totalChunks
}
// 从header获取文件名
func getFileNameFromHeader(resp *http.Response) string {
cd := resp.Header.Get("Content-Disposition")
s1 := strings.Split(cd, ";")
s2 := strings.Split(s1[1], "=")
str := s2[1]
if strings.HasPrefix(str, "UTF-8") {
enEscapeUrl, _ := url.QueryUnescape(str)
str1 := strings.TrimLeft(enEscapeUrl, "UTF-8''")
return str1
}
s3 := strings.TrimLeft(str, "\"")
s4 := strings.TrimRight(s3, "\"")
return s4
}
// 探测远端地址是否可用
func rawConnect(host string, port string) error {
timeout := tcpTimeout
conn, err := net.DialTimeout("tcp", net.JoinHostPort(host, port), timeout)
if err != nil {
log.Println("Connecting error:", err)
return err
}
if conn != nil {
defer func(conn net.Conn) {
err := conn.Close()
if err != nil {
log.Println("关闭连接失败")
}
}(conn)
log.Println("Opened", net.JoinHostPort(host, port))
return nil
}
return nil
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/lurenjia528/file_client_go.git
git@gitee.com:lurenjia528/file_client_go.git
lurenjia528
file_client_go
file_client_go
1a3fe9117fee

搜索帮助