package util import ( "context" "encoding/base64" "fmt" "github.com/gogf/gf/v2/errors/gerror" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/os/gfile" "time" ) func SavePdfFile(ctx context.Context, num, pdfBase64 string) (filePath string, err error) { var ( rootDir = g.Cfg().MustGet(ctx, "pdfFilePathRootDir", "/out").String() pathPrefix = g.Cfg().MustGet(ctx, "pdfFilePathPrefix", "/invoice").String() webDoMain = g.Cfg().MustGet(ctx, "pdfFilePathDomain", "https://www.jianyu360.com").String() now = time.Now() requestPath = fmt.Sprintf("/%s/%s/%s.pdf", pathPrefix, now.Format("2006-01-02"), num) fileFullPath = fmt.Sprintf("%s%s", rootDir, requestPath) ) data, err := base64.StdEncoding.DecodeString(pdfBase64) if err != nil { return "", gerror.Wrap(err, "解析文件base64编码失败") } pdfFile, err := gfile.Create(fileFullPath) if err != nil { return "", gerror.Wrap(err, "创建pdf文件异常") } if _, err = pdfFile.Write(data); err != nil { return "", gerror.Wrap(err, "pdf文件写入异常") } return fmt.Sprintf("%s%s", webDoMain, requestPath), nil }