在一些web應(yīng)用中,往往會(huì)根據(jù)當(dāng)前日期創(chuàng)建文件夾,來(lái)保存用戶(hù)的文件等信息,比如
static/product/20170410/a.jpg
static/product/20170411/b.jpg
獲取日期并創(chuàng)建文件夾這個(gè)過(guò)程中可能會(huì)遇到坑,比如創(chuàng)建的文件夾沒(méi)有寫(xiě)入的權(quán)限,下面給出一段代碼,可以解決這個(gè)問(wèn)題
import (
"os"
"path/filepath"
"time"
)
// CreateDateDir 根據(jù)當(dāng)前日期來(lái)創(chuàng)建文件夾
func CreateDateDir(basePath string) string {
folderName := time.Now().Format("20060102")
folderPath := filepath.Join(basePath, folderName)
if _, err := os.Stat(folderPath); os.IsNotExist(err) {
// 必須分成兩步
// 先創(chuàng)建文件夾
os.Mkdir(folderPath, 0777)
// 再修改權(quán)限
os.Chmod(folderPath, 0777)
}
return folderPath
}
http://studygolang.com/topics/33 這上面也有解決辦法,一種就是上面的兩步走,另一種就是利用修改掩碼
import (
"os"
"path/filepath"
"time"
"syscall"
)
// CreateDateDir 根據(jù)當(dāng)前日期來(lái)創(chuàng)建文件夾
func CreateDateDir(basePath string) string {
folderName := time.Now().Format("20060102")
folderPath := filepath.Join(basePath, folderName)
if _, err := os.Stat(folderPath); os.IsNotExist(err) {
oldMask := syscall.Umask(0)
os.Mkdir(folderPath, os.ModePerm)
syscall.Umask(oldMask)
}
return folderPath
}