读取文件并计算MD5
file, info, err := ctx.FormFile("file")
if err != nil {
...
}
defer file.Close()
contentType := info.Header.Get("Content-Type")
if contentType == "" {
handlers.BadRequest("没有Content-Type")
}
fileHandler, err := info.Open()
if err != nil {
...
}
imageFile, imageType, err := image.DecodeConfig(fileHandler)
if err != nil {
...
}
md5Handle := md5.New()
_, err := io.Copy(md5Handle, file)
if err != nil {
...
}
md5Byte := md5Handle.Sum(nil)
md5 := hex.EncodeToString(md5Byte)
if _, err = file.Seek(0, io.SeekStart); err != nil {
...
}
获取当前文件绝对路径
func GetCurrentAbPath() string {
dir := getCurrentAbPathByExecutable()
if strings.Contains(dir, getTmpDir()) {
return getCurrentAbPathByCaller()
}
return dir
}
func getTmpDir() string {
dir := os.Getenv("TEMP")
if dir == "" {
dir = os.Getenv("TMP")
}
res, _ := filepath.EvalSymlinks(dir)
return res
}
func getCurrentAbPathByExecutable() string {
exePath, err := os.Executable()
if err != nil {
log.Fatalln(err)
}
res, _ := filepath.EvalSymlinks(filepath.Dir(exePath))
return res
}
func getCurrentAbPathByCaller() string {
var abPath string
_, filename, _, ok := runtime.Caller(0)
if ok {
abPath = path.Dir(filename)
}
return abPath
}