Golang中的一些文件信息提取及minio文件的URL获取 | 青训营笔记

895 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第 7 天,今天对简易抖音项目中写代码中出现的一些文件信息的提取,以及minio文件url的获取方法进行总结

os.File类型

os.File是属于os库中的文件类型,os.File类型的文件信息提取是比较简单的,可以通过Stat函数得到一个FileInfo类型的返回变量,然后便可以直接获取信息了

image.png

(FileInfo接口)

获取信息代码:

func main() {
   file, err := os.Open("D:/photo.png")
   if err != nil {
      log.Errorf("Open file error : %v", err)
   }

   fileStat, err := file.Stat()
   if err != nil {
      log.Errorf("Get stat error : %v", err)
   }

   fileName := fileStat.Name()         //获取文件名
   fileSize := fileStat.Size()         //获取文件大小
   fileModTime := fileStat.ModTime()   //获取文件修改时间
   fileMod := fileStat.Mode()          //获取文件mode
   fileIsDir := fileStat.IsDir()       //查询文件是否有目录
   fileSuf := path.Ext(fileName)       //可以通过path库获取扩展名

   timeLayout := "2006-01-02 15:04:05"
   println(fileName, fileSize, fileModTime.Format(timeLayout), fileMod, fileIsDir, fileSuf)
}

获取信息结果

image.png

multipart.File类型

multipart.File是mime/multipart中的文件类型,适用于http和常见浏览器生成的multipart主体。

在接收到multipart.FileHeader文件头后,可以通过Filename以及Size获得文件的文件名以及文件大小

fileName := fileHeader.Filename   //获取文件名
fileSize := fileHeader.Size       //获取文件大小

也可以通过fileHeader.Open()打开获得multipart.File类型的文件,进行其他文件处理

multipart.File转换为os.File:

osFile := multipartFile.(*os.File)

minio获取上传文件的URL

在minio后台平台中,我们可以直接点击存储桶中的文件,在右端选项中选择Share便可以复制文件的URL编码了

image.png

image.png

不过这样生成的URL是临时的,我们也可以对存储桶进行设置,设置后就可以得到永久的URL了

打开存储桶设置的Anonymous,在access添加一项规则

Prefix设置为*,Access设置为readonly

image.png

image.png

这样就可以通过http://服务器名:端口号/存储桶名/文件名来直接获取文件了 例如:

http://101.39.43.61:9000/video/1.mp4