使用 slimfiler 构建高效的文件服务器
在现代 Web 开发中,文件管理是一个常见的需求,尤其是图片的处理和存储。slimfiler是一个用 Go 语言开发的文件服务器,它不仅支持文件的上传、下载和管理,还内置了强大的图片处理功能,例如缩放、裁剪和格式转换。更值得一提的是,slimfiler的图片处理功能兼容 aliyun OSS 图片处理参数,使得开发者可以轻松迁移或集成现有的图片处理逻辑。本文将介绍如何使用 slimfiler构建一个高效的文件服务器,并展示其强大的图片处理功能。
SlimFiler 的核心功能
- 文件上传与下载
slimfiler提供了简单易用的 API 来处理文件的上传和下载,支持多种存储后端(如本地文件系统、云存储等)。 - 图片处理
slimfiler内置了强大的图片处理功能,支持以下操作:- 缩放(resize)
- 裁剪(crop)
- 格式转换(如将 PNG 转换为 JPG)
- 旋转(rotate)
- 水印(watermark)等功能
- 兼容 Aliyun OSS 参数
slimfiler的图片处理参数与阿里云 OSS 图片处理参数完全兼容,这意味着你可以直接使用阿里云 OSS 的图片处理参数来处理图片。 - 轻量高效 由于是用 Go 语言开发的,
slimfiler具有高性能和低资源占用的特点,适合处理高并发的文件请求。
安装 SlimFiler
要使用 slimfiler,首先需要将其安装到你的开发环境中。你可以通过以下步骤安装:
或者直接下载执行包直接运行:linux 下载windows 下载配置文件 下载
slimfiler -f ./conf.yaml
or
slimfiler.exe -f ./conf.yaml
使用 Go 编译并运行:
go build -o slimfiler
./slimfiler
克隆 slimfiler的 GitHub 仓库:
git clone https://github.com/AndsGo/slimfiler.git
cd slimfiler
配置 SlimFiler
slimfiler的配置文件是一个简单的 YAML 文件。
默认使用本地存储,可以切换成支持S3协议的对象存储,如minio,AWS s3,aliyun oss
Name: aigc
Port: 8000
UploadConf:
MaxImageSize: 33554432 # 32 mb
MaxVideoSize: 1073741824 # 1gb
MaxAudioSize: 33554432 # 32mb
MaxOtherSize: 10485760 # 10 mb
ServerURL: "" # nginx path
Node: DiskOptions
DiskOptions:
DiskPath: "./data/file/public"
S3Options:
Bucket: ""
Endpoint: ""
SecretId: ""
SecretKey: ""
Region: ""
Token: ""
S3ForcePathStyle: true
DisableSSL: false
PorxyCacheConf:
MaxCacheSize: 10485760 # 10M
Node: DiskOptions
DiskOptions:
DiskPath: "./data/cache" # 一般在 /tmp 下
S3Options:
Bucket: ""
Endpoint: ""
SecretId: ""
SecretKey: ""
Region: ""
Token: ""
S3ForcePathStyle: true
DisableSSL: false
Db:
Path: ./data/file/db/slimfiler.db
BuketName: "slimfiler" # difualt bucket name
Log:
FileName: slimfilerLog
Path: ./data/logs
Level: info
Compress: false
KeepDays: 7
StackCoolDownMillis: 100
使用 SlimFiler 处理文件
1. 文件上传
使用 slimfiler上传文件非常简单。以下是一个使用 curl 上传文件的示例:
curl -X POST -F "file=@/path/to/your/image.jpg" http://localhost:8080/upload
上传成功后,slimfiler 会返回文件url,用于后续的文件访问和处理。
2. 文件查看/下载
通过文件的唯一标识符,可以直接下载文件:
curl -O http://127.0.0.1:8080/data/test/2025-02-07/987cb8c4-f7f8-4b1e-940a-f9dee03e6ec8.jpg
3. 文件代理
代理 将需要代理的url追加到 /proxy/后面
http://127.0.0.1:8000/proxy/https://raw.githubusercontent.com/AndsGo/imageprocess/refs/heads/main/examples/example.jpg
文件代理支持缓存,可以用于简单的内网CDN加速。
例如上面的链接https://raw.githubusercontent.com/AndsGo/imageprocess/refs/heads/main/examples/example.jpg
我直接访问需要 2s,代理缓存后,

再重新访问只需要38ms:

4. 图片处理参数
图片处理依赖imageprocess库,图片查看和代理都支持图片压缩。 图片处理兼容 aliyun oss 的图片处理,在url后面添加参数x-oss-process即可。支持图片格式:WEBP,JPG,JPEG,PNG,BMP,TIFF,GIF。文件查看/下载 和 文件代理都支持图片处理。
以下是一些常见的图片处理示例:
添加水印 在图片右下角添加文字水印:
?x-oss-process=image/watermark,text_SlimFiler,color_FFFFFF,size_20,g_se,x_10,y_10
格式转换 将图片转换为 webp格式, webp作为新一代图片格式体积会变小不少:
?x-oss-process=image/format,webp
裁剪图片 将图片裁剪为 200x200 的大小:
?x-oss-process=image/crop,w_200,h_200
缩放图片 将图片宽度调整为 300px,高度按比例缩放:
?x-oss-process=image/resize,w_300
这些参数与阿里云 OSS 完全兼容,因此你可以直接将现有的 OSS 图片处理逻辑迁移到 slimfiler。
图片处理功能使用
总结
flimfiler是一个功能简单且易于使用的文件服务器,特别适合需要处理图片的 Web 应用。它支持文件的上传、下载和管理,并内置了与阿里云 OSS 兼容的图片处理功能。通过简单的配置和灵活的 API,flimfiler可以帮助开发者快速构建高效的文件服务。
如果你正在寻找一个轻量级且支持图片实时处理的的文件服务器,slimfiler 绝对是一个值得尝试的工具。更多详细信息,访问 GitHub 仓库。
本文作者 xulin(海鸥技术部落),原载于团队 GitBook 技术 Wiki。
快速搭建支持图片实时处理的文件服务
使用 slimfiler 构建高效的文件服务器 在现代 Web 开发中,文件管理是一个常见的需求,尤其是图片的处理和存储。slimfiler是一个用 Go 语言开发的文件服务器,它不仅支持文件的上传、下载和管理,还内置了强大的图片处理功能,例如缩放、裁剪和格式转换。更值得一提的是,slimfiler的图片处理功能兼容 aliyun OSS 图片处理参数,使得开发者可以轻松迁移或集成现有的图片处理逻