本章节的示例演示打包/解包的同时也演示了对数据的加密/解密。大部分业务项目其实并不需要加密/解密操作,因此直接使用工具打包即可。
创新互联是一家专业提供兴山企业网站建设,专注与网站制作、做网站、HTML5、小程序制作等业务。10年已为兴山众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。
在上一章节我们介绍通过gf
工具链进行文件/目录打包,并生成GO文件编译到可执行文件中。在本章节中,我们介绍资源管理中涉及到的方法,并通过一个打包/解包二进制资源文件的示例,介绍这些方法实现自定义的打包/解包功能。同时,我们也演示了如何通过自定义加解密来保护我们的资源文件内容。
接口文档:
https://pkg.go.dev/github.com/gogf/gf/v2/os/gres
简要介绍:
Pack*
/Unpack*
方法可以实现对任意文件的打包/解包功能,可以打包到二进制文件或者Go代码文件。 Resource
对象实现,可实现对打包内容的添加,文件的检索查找,以及对目录的遍历等功能。 File
对象实现,该文件对象和os.File
文件对象类似,并且该对象实现了http.File
接口。 ScanDir
用于针对于特定目录下的文件/目录检索,并且支持递归检索。 ScanDirFile
用于针对于特定目录下的文件检索,并且支持递归检索。 Dump
方法在终端打印出Resource
资源对象所有的文件列表,资源管理器中的文件分隔符号统一为/
。 gres
资源管理模块提供了默认的Resource
对象,并通过包方法提供了对该默认对象的操作。我们将项目根目录下的public
和config
目录打包为data.bin
二进制文件,并通过gaes
加密算法对生成的二进制内容进行加密。
package main
import (
"github.com/gogf/gf/v2/crypto/gaes"
"github.com/gogf/gf/v2/os/gfile"
"github.com/gogf/gf/v2/os/gres"
)
var (
CryptoKey = []byte("x76cgqt36i9c863bzmotuf8626dxiwu0")
)
func main() {
binContent, err := gres.Pack("public,config")
if err != nil {
panic(err)
}
binContent, err = gaes.Encrypt(binContent, CryptoKey)
if err != nil {
panic(err)
}
if err := gfile.PutBytes("data.bin", binContent); err != nil {
panic(err)
}
}
我们使用将刚才打包生成的data.bin
,需要解密和解包两步操作。
package main
import (
"github.com/gogf/gf/v2/crypto/gaes"
"github.com/gogf/gf/v2/os/gfile"
"github.com/gogf/gf/v2/os/gres"
)
var (
CryptoKey = []byte("x76cgqt36i9c863bzmotuf8626dxiwu0")
)
func main() {
binContent := gfile.GetBytes("data.bin")
binContent, err := gaes.Decrypt(binContent, CryptoKey)
if err != nil {
panic(err)
}
if err := gres.Add(binContent); err != nil {
panic(err)
}
gres.Dump()
}
最后,我们使用gres.Dump()
打印出添加成功的文件列表查看资源文件是否添加成功。
网站标题:创新互联GoFrame教程:GoFrame资源管理-方法打包
分享URL:http://www.36103.cn/qtweb/news47/5447.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联