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

相关推荐