当前位置: 首页 > article >正文

快速搭建支持图片实时处理的文件服务

使用 slimfiler 构建高效的文件服务器

在这里插入图片描述

在现代 Web 开发中,文件管理是一个常见的需求,尤其是图片的处理和存储。slimfiler 是一个用 Go 语言开发的文件服务器,它不仅支持文件的上传、下载和管理,还内置了强大的图片处理功能,例如缩放裁剪格式转换。更值得一提的是,slimfiler 的图片处理功能兼容 aliyun OSS 图片处理参数,使得开发者可以轻松迁移或集成现有的图片处理逻辑。本文将介绍如何使用 slimfiler 构建一个高效的文件服务器,并展示其强大的图片处理功能。


SlimFiler 的核心功能

  1. 文件上传与下载
    slimfiler 提供了简单易用的 API 来处理文件的上传和下载,支持多种存储后端(如本地文件系统、云存储等)。

  2. 图片处理
    slimfiler 内置了强大的图片处理功能,支持以下操作:

    • 缩放(resize)
    • 裁剪(crop)
    • 格式转换(如将 PNG 转换为 JPG)
    • 旋转(rotate)
    • 水印(watermark)等功能
  3. 兼容 Aliyun OSS 参数
    slimfiler 的图片处理参数与阿里云 OSS 图片处理参数完全兼容,这意味着你可以直接使用阿里云 OSS 的图片处理参数来处理图片。

  4. 轻量高效
    由于是用 Go 语言开发的,slimfiler 具有高性能和低资源占用的特点,适合处理高并发的文件请求。


安装 SlimFiler

要使用 slimfiler ,首先需要将其安装到你的开发环境中。你可以通过以下步骤安装:

  1. 克隆 slimfiler 的 GitHub 仓库:

    git clone https://github.com/AndsGo/slimfiler.git
    cd slimfiler
    
  2. 使用 Go 编译并运行:

    go build -o slimfiler
    ./slimfiler
    
  3. 或者直接下载执行包直接运行:

    linux 下载

    windows 下载

    配置文件 下载

    slimfiler -f ./conf.yaml
    

    or

    slimfiler.exe -f ./conf.yaml
    

配置 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文件查看/下载文件代理都支持图片处理。

以下是一些常见的图片处理示例:

  • 缩放图片
    将图片宽度调整为 300px,高度按比例缩放:

    ?x-oss-process=image/resize,w_300
    
  • 裁剪图片
    将图片裁剪为 200x200 的大小:

    ?x-oss-process=image/crop,w_200,h_200
    
  • 格式转换
    将图片转换为 webp格式, webp作为新一代图片格式体积会变小不少:

    ?x-oss-process=image/format,webp
    
  • 添加水印
    在图片右下角添加文字水印:

    ?x-oss-process=image/watermark,text_SlimFiler,color_FFFFFF,size_20,g_se,x_10,y_10
    

这些参数与阿里云 OSS 完全兼容,因此你可以直接将现有的 OSS 图片处理逻辑迁移到 slimfiler


总结

flimfiler 是一个功能简单且易于使用的文件服务器,特别适合需要处理图片的 Web 应用。它支持文件的上传、下载和管理,并内置了与阿里云 OSS 兼容的图片处理功能。通过简单的配置和灵活的 API,flimfiler 可以帮助开发者快速构建高效的文件服务。

如果你正在寻找一个轻量级且支持图片实时处理的的文件服务器,slimfiler 绝对是一个值得尝试的工具。更多详细信息,访问 GitHub 仓库。


http://www.kler.cn/a/543375.html

相关文章:

  • 【经验分享】Linux 系统安装后内核参数优化
  • 详解 JavaScript 中 fetch 方法
  • 算法学习笔记之贪心算法
  • Android Studio集成讯飞SDK过程中在配置Project的时候有感
  • [7] 游戏机项目说明
  • 活动预告 | Power Hour: Copilot 引领商业应用的未来
  • pytest测试专题 - 1.1 运行pytest
  • SpringBoot3.2新武器RestClient如何替代Feign?
  • 42页精品PPT | 数字政府智慧政务大数据平台建设方案
  • STM 32 IO模拟两线串行接口
  • 使用EVE-NG-锐捷实现ACL访问控制
  • 深度剖析观察者模式:从理论到实战的Java实现
  • Prompt 工程优化方
  • 如何本地部署DeepSeek集成Word办公软件
  • Java开发实战:使用IntelliJ IDEA 开发Spring Boot + MyBatis + MySQL的详细实现步骤
  • 【大数据安全分析】安全告警关联相关安全分析场景
  • 国际版宝塔面板安装教程(Centos7)
  • DeepSeek的大模型介绍
  • 深入 JVM 虚拟机:字符串常量池演变与 intern() 方法工作原理解析
  • 使用stm32控制esp01s
  • Hive的数据库操作和表操作
  • 未来替代手机的产品,而非手机的本身
  • SpringBoot服务器的采购上,服务器的数量和性能配置如何取舍【无标题】
  • 【vue3】入门基础知识点
  • PHP 中的除以零错误
  • 深度学习实战基础案例——卷积神经网络(CNN)基于DenseNet的眼疾检测|第4例