gin html目录,gin 单个文件函数 上传文件到本地目录里

// 单个文件 上传文件到本地目录里

// 调用方法 utils.UplaodFileToLocal(c)

// author haima

func UplaodFileToLocal(c *gin.Context) (err error,path string){

// 单个文件

file, err := c.FormFile("file")

if err != nil {

err = errors.New(fmt.Sprintf("获取数据失败,%v", err))

return

}

//获取文件后缀

filenameArr := strings.Split(file.Filename, ".")

//if filenameArr[1] != "xlsx" {

//errors.New("上传失败,文件类型不支持,只能上传 xlsx 格式的。")

//return

//}

extStrSlice := []string{"xlsx"}

if !ContainArray(filenameArr[1], extStrSlice) {

//fmt.Println("上传失败,文件类型不支持,只能上传 xlsx 格式的。")

err = errors.New("上传失败,文件类型不支持,只能上传 xlsx 格式的。")

return

}

//filepath := 'resource/public/uploads/'

filepath := global.GVA_CONFIG.Uploads.FilePath

//如果没有filepath文件目录就创建一个

if _, err := os.Stat(filepath); err != nil {

if !os.IsExist(err) {

os.MkdirAll(filepath, os.ModePerm)

}

}

//上传到的路径

//path := 'resource/public/uploads/20060102150405test.xlsx'

file.Filename = fmt.Sprintf("%s%s", time.Now().Format("20060102150405"), file.Filename) // 文件名格式 自己可以改 建议保证唯一性

path = filepath + file.Filename //路径+文件名上传

// 上传文件到指定的目录

err = c.SaveUploadedFile(file, path)

if err != nil {

err = errors.New(fmt.Sprintf("上传失败,%v", err))

return

}

return

}

//Contain 判断obj是否在target中,target支持的类型array,slice,map false:不在 true:在

func ContainArray(obj interface{}, target interface{}) bool {

targetValue := reflect.ValueOf(target)

switch reflect.TypeOf(target).Kind() {

case reflect.Slice, reflect.Array:

for i := 0; i < targetValue.Len(); i++ {

if targetValue.Index(i).Interface() == obj {

return true

}

}

case reflect.Map:

if targetValue.MapIndex(reflect.ValueOf(obj)).IsValid() {

return true

}

}

return false

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值