Browse Source

增加文件大小、hash的获取

master
453530270@qq.com 2 years ago
parent
commit
30736feb9d
  1. 13
      fsv2/handler/serverinfo.go
  2. 26
      fsv2/util/util.go

13
fsv2/handler/serverinfo.go

@ -2,6 +2,7 @@ package handler
import (
"encoding/json"
"fmt"
"net/http"
"os"
"path/filepath"
@ -23,6 +24,8 @@ type FileJson struct {
Fname string `json:"fname"`
Dirflag bool `json:"dirflag"`
Isbackup int `json:"isbackup"`
Fhash string `json:"hash"` // hash
Fsize string `json:"size"` //文件大小, 输出带单位的大小
}
type FilesListJson struct {
@ -65,7 +68,15 @@ func SerInfo(w http.ResponseWriter, r *http.Request) {
if strings.Contains(v.Name(), "backup") {
isbak = 1
}
flist.Flist = append(flist.Flist, FileJson{Fname: v.Name(), Dirflag: v.IsDir(), Isbackup: isbak})
// 计算文件的hash
fhash := util.CalacHash(v)
// 文件大小
// 获取文件大小(以字节为单位)
sizeInBytes := fileInfo.Size()
sizeStr := fmt.Sprintf("%.2f KB", float64(sizeInBytes)/1024)
// fmt.SPrintf("文件 %s 的大小为 %.2f KB\n", filename, sizeInKB)
flist.Flist = append(flist.Flist, FileJson{Fname: v.Name(), Dirflag: v.IsDir(), Isbackup: isbak, Fhash: fhash, Fsize: sizeStr})
}
}

26
fsv2/util/util.go

@ -2,6 +2,7 @@ package util
import (
"archive/zip"
"crypto/sha256"
"encoding/base64"
"fmt"
"io"
@ -225,3 +226,28 @@ func CorsHadler(w http.ResponseWriter, r *http.Request) {
return
}
}
// 计算文件的hash
func CalacHash(rfile string) string {
// 获取到真实地址
rpath := filepath.Join(config.G.FilePath, rfile)
//
file, err := os.Open(rpath)
if err != nil {
panic(err)
}
defer file.Close()
// initlize hash object
hash := sha256.New()
// write file into hash object
if _, err := io.Copy(hash, file); err != nil {
panic(err)
}
// get hash value
hashBytes := hash.Sum(nil)
//converto to hash string
hastString := fmt.Sprintf("%x", hashBytes)
return hastString
}

Loading…
Cancel
Save