这是我参与「第五届青训营」伴学笔记创作活动的第 7 天,今天对简易抖音项目中写代码中出现的一些文件信息的提取,以及minio文件url的获取方法进行总结
os.File类型
os.File是属于os库中的文件类型,os.File类型的文件信息提取是比较简单的,可以通过Stat函数得到一个FileInfo类型的返回变量,然后便可以直接获取信息了
(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)
}
获取信息结果
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编码了
不过这样生成的URL是临时的,我们也可以对存储桶进行设置,设置后就可以得到永久的URL了
打开存储桶设置的Anonymous,在access添加一项规则
Prefix设置为*,Access设置为readonly
这样就可以通过http://服务器名:端口号/存储桶名/文件名来直接获取文件了
例如:
http://101.39.43.61:9000/video/1.mp4