/**
* 异步上传图片
* @param files
* @return
* @throws IOException
* @throws IllegalStateException
* ResponseResult 是自己定义的返回值对象,可随便定义
*/
func UploadFiles(context *gin.Context) {
referId := context.PostForm("referId")
fileType := context.PostForm("fileType")
describe := context.PostForm("describe")
fmt.Println(referId)
fmt.Println(fileType)
fmt.Println(describe)
form, err := context.MultipartForm()
//错误处理
if err != nil {
context.JSON(http.StatusBadRequest, result.Fail(400, "文件上传异常"))
return
}
files := form.File["files"]
if files == nil {
context.JSON(http.StatusOK, result.Fail(400, "上传文件为空,请检查"))
return
}
//返回逗号拼接的文件存储地址 resultFilePath
resultFilePath := ""
for _, file := range files {
//文件夹路径:文件存储根路径 + fileType + 日期currDate + 文件名
currDate := utils.GetCurrentTimeStrFmt("yyyyMMdd")
//size := file.Size
//获得原始文件名;
fileRealName := file.Filename
//获取服务器指定文件存取路径
savedDir := "D://upload"
dir := savedDir + "/" + fileType + "/" + currDate //得到文件路径
//点号的位置
pointIndex := strings.LastIndex(fileRealName, ".")
//截取文件后缀
fileSuffix := utils.SubString(fileRealName, pointIndex, len(fileRealName)-1)
//获取文件名不带后缀名
filePreName := utils.SubString(fileRealName, 0, pointIndex)
date := utils.GetCurrentTimeStrFmt("yyyyMMddHHmmss")
//文件存取名
savedFileName := filePreName + "_" + date + fileSuffix
//如果没有filepath文件目录就创建一个
if _, err := os.Stat(dir); err != nil {
if !os.IsExist(err) {
os.MkdirAll(dir, os.ModePerm)
logrus.Info("创建文件夹:" + dir)
}
}
// 上传文件到指定的目录
err = context.SaveUploadedFile(file, dir+"/"+savedFileName)
if err != nil {
err = errors.New(fmt.Sprintf("上传失败,%v", err))
return
}
filepath := "/" + fileType + "/" + currDate + "/" + savedFileName
resultFilePath = resultFilePath + filepath + ","
}
//多个文件以逗号分隔,然后去掉最后一个逗号
resultFilePath = utils.SubString(resultFilePath, 0, len(resultFilePath)-1)
fmt.Println("保存文件信息===" + resultFilePath)
context.JSON(http.StatusOK, result.OkResult(resultFilePath))
}