Go Gin 文件上传下载

//判断文件是否存在  存在返回 true 不存在返回false                                                                                                                         
// func checkFileIsExist(filename string) bool {                                                                                                                          
//  var exist = true                                                                                                                                                      
//  if _, err := os.Stat(filename); os.IsNotExist(err) {                                                                                                                  
//      exist = false                                                                                                                                                     
//  }                                                                                                                                                                     
//  return exist                                                                                                                                                          
// }                                                                                                                                                                      

func UpFile(c *gin.Context){
    // 为 multipart forms 设置较低的内存限制 (默认是 32 MiB)                                                                                                              
    // router.MaxMultipartMemory = 8 << 20  // 8 MiB                                                                                                                      

    // 单文件                                                                                                                                                             
    file, _ := c.FormFile("file")
    log.Println(file.Filename)

    // 上传文件至指定目录                                                                                                                                                 

    if err := c.SaveUploadedFile(file, `./upload/` + file.Filename); err != nil {
        c.String(http.StatusBadRequest, fmt.Sprintf("upload file err: %s", err.Error()))
        return
    }

    c.String(http.StatusOK, fmt.Sprintf("'%s' uploaded!", file.Filename))
}

func FileExist(path string) bool {
    _, err := os.Lstat(path)
    return !os.IsNotExist(err)
}

func DownFile(c *gin.Context){
    downfile := c.Param("downloadfile")

    filename := "周报-202054-510.xls"

    dfile := fmt.Sprintf("/data/go/src/goWEB/upload/%s",downfile)

    if fret := FileExist(dfile) ; fret {
        c.Writer.Header().Add("Content-Disposition", fmt.Sprintf("attachment; filename=%s", filename))//fmt.Sprintf("attachment; filename=%s", filename)对下载的文件重命名
        c.Writer.Header().Add("Content-Type", "application/octet-stream")
        c.File(dfile)
    } else {
        c.JSON(http.StatusOK, fmt.Sprintf("'%s' is not exits", dfile))
        return
    }
}
posted @   snake_j  阅读(188)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示