46 lines
892 B
Go
Executable File
46 lines
892 B
Go
Executable File
package utils
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"mime/multipart"
|
|
"os"
|
|
)
|
|
|
|
func FormatFileSize(i int64) string {
|
|
const (
|
|
KB = 1024
|
|
MB = KB * 1024
|
|
GB = MB * 1024
|
|
TB = GB * 1024
|
|
)
|
|
switch {
|
|
case i >= TB:
|
|
return fmt.Sprintf("%.2fTB", float64(i)/float64(TB))
|
|
case i >= GB:
|
|
return fmt.Sprintf("%.2fGB", float64(i)/float64(GB))
|
|
case i >= MB:
|
|
return fmt.Sprintf("%.2fMB", float64(i)/float64(MB))
|
|
case i >= KB:
|
|
return fmt.Sprintf("%.2fKB", float64(i)/float64(KB))
|
|
default:
|
|
return fmt.Sprintf("%dB", i)
|
|
}
|
|
}
|
|
|
|
// SaveUploadedFile 保存 multipart 上传的文件到指定路径
|
|
func SaveUploadedFile(fh *multipart.FileHeader, dst string) error {
|
|
src, err := fh.Open()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer src.Close()
|
|
out, err := os.Create(dst)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
defer out.Close()
|
|
_, err = io.Copy(out, src)
|
|
return err
|
|
}
|