zoukankan      html  css  js  c++  java
  • golang 文件上传和下载以及swagger配置

    上传:

    // @Summary 上传文件
    // @Description
    // @Tags file
    // @Accept multipart/form-data
    // @Param file formData file true "file"
    // @Produce  json
    // @Success 200 {object} filters.Response {"code":200,"data":nil,"msg":""}
    // @Router /upload [post]
    func UploadFile(ctx *gin.Context) {
        file, header, err := ctx.Request.FormFile("file")
        if err != nil {
            returnMsg(ctx, configs.ERROR_PARAMS, "", err.Error())
            return
        }
        //获取文件名
        filename := header.Filename
        //写入文件
        out, err := os.Create("./static/" + filename)
        if err != nil {
            returnMsg(ctx, configs.ERROR_SERVERE, "", err.Error())
            return
        }
        defer out.Close()
        _, err = io.Copy(out, file)
        if err != nil {
            log.Fatal(err)
    
        }
        returnMsg(ctx, 200, "", "success")
    }

    下载:

    // @Summary 下载文件
    // @Description
    // @Tags file
    // @Param filename query string true "file name"
    // @Success 200 {object} gin.Context
    // @Router /download [get]
    func DownloadFile(ctx *gin.Context) {
        filename := ctx.DefaultQuery("filename", "")
        //fmt.Sprintf("attachment; filename=%s", filename)对下载的文件重命名
        ctx.Writer.Header().Add("Content-Disposition", fmt.Sprintf("attachment; filename=%s", filename))
        ctx.Writer.Header().Add("Content-Type", "application/octet-stream")
        ctx.File("./static/a.txt")
    }

    上传下载读取csv等文件:  https://blog.csdn.net/aaaadong/article/details/90177038

  • 相关阅读:
    浏览器内核
    link和@import的区别
    跨域iframe如何通信
    数组、对象基本操作
    浏览器兼容性问题
    微信H5开发
    前端面试整理
    js多维数组转一维数组
    js实现继承
    javascript函数闭包(closure)
  • 原文地址:https://www.cnblogs.com/zhzhlong/p/12556457.html
Copyright © 2011-2022 走看看