Mac 好用的图床工具 FCM

FCM

暂时没想好取什么名字,姑且这么叫吧 :smirk:

简介

这是一个用golang编写的多云上传工具,灵感来自于 PicUploader , 感谢@xiebruce

目前的样子是一个命令行的工具,以后“可能”(挖坑)会有界面吧。同时也是作为自己学习过程的一个见证。目前支持的服务商(对象存储或者图床服务商)如下:

服务商 文件类型
阿里云 任意
腾讯云 任意
百度云 任意
京东云 任意
ucloud 任意
七牛 任意
又拍云 任意
sm.ms 图片
码云(gitee) 图片

特点

  • 数据库去重复支持,上传的时候如果数据库已存在记录,会自动跳过上传,病返回数据库中存在的链接。
  • 高并发上传大文件支持,大于128M的文件都使用分片上传,充分利用你的宽带。
  • 跨平台支持,除了配置文件,无需额外环境设置。
  • 轻量化,不驻后台。
  • 支持删除文件同步到云端(仅指数据库记录与云端,本地文件不作处理)

使用说明

 ./fcm  <option> [args]
指令 参数 说明
-i –init config 初始化配置文件,不出意外会自动打开配置文件
All 初始化所有,包括目录,会在用户主目录下建立FCM文件夹
-u –use console 使用终端模式上传文件,这个模式在上传完成后打印出所有的文件链接。例如:-u console ./test.txt
system 以系统调用方式上传文件,主要用来支持右键上传,上传完成链接后会自动写入剪切板,如果上传多个云空间,只会返回每个文件的第一条链接
typora 作为typora的自定义上传插件
-d –db Dump 从数据库中导出所有的文件链接,文件保存在FCM文件夹的save文件夹下
query 查询单个文件的记录
-del 删除某个文件记录,同步删除云端的文件。直接接文件路径 -del /path/to/file

第一次使用时,执行 ./fcm -i all 初始化,然后填写配置文件,如果系统没有自动打开文件,请在当前用户主目录下的/FCM/config/config.json打开手动编辑。

配置文件大致结构如下:

{
  "name": "FCM 配置文件",
  "storage_types": {
    "aliyun": {
      "name": "Aliyun oss SDK",    //无关紧要的参数
      "access_key_id": "LT****************KS",    //云平台获取的key
      "access_key_secret": "Tu*****************e0",    // 云平台获取的secret
      "bucket_name": "bucket",    // 对象存储名称
      "endpoint": "oss-cn-shenzhen.aliyuncs.com",    //地域
      "custom_domain": ""    //自定义返回链接,不填默认使用 bucket_name.enpoint 拼接
    },
    ...        // 省略大致相同的结构体
    "smms": {
      "name": "smms",
      "access_token": "EVYkI2DGsBGcWnt8LK4AtGoGag3qcyQY",    //smms的token
      "proxy": ""
    },
    "gitee": {
      "name": "gitee",
      "owner": "sevth",    // 所有者,就是链接地址的那个名字
      "repo": "image",    // 仓库名字
      "access_token": "0*************2"    //token
    }
  },
  "dir说明": "存放的文件目录 {R} 根据文件后缀判断文件类型,使用对应的路径,时间格式 {Y} 2020 {y} 20 {M} Apr {m} 04 {d} 01",
  "directory": "test/{Y}",// 类似的 {R}/{Y}/{m}/{d} 会自动替换成类似 image/2020/5/1 的形式,{R}是根据文件类型判断的。
  "primary_domain": "",    // 主域名,除非你用反代,具体看 picUpload 的说明
  "uses": [        //上传到哪些(或者一个)服务商
    "gitee",
    "aliyun"        
  ],
  "dsn": {    // 数据库配置,一般除非必要,保存默认就好。
    "uses": "sqlite3",    // 还支持 mysql,mssql,postgres
    "protocol": "",    //类似于 127.0.0.1:3306 / localhost
    "username": "",    //数据库用户名
    "password": "",    //密码
    "dbname": "",    //使用的数据库
    "dsn_link": "",    //dsn 链接  权重高,填写即使用dsn链接连接数据库
    "debug": false
  }
}

直接使用

  • 在终端中输入

    ./fcm -u console /path/to/you/file1 /path/to/you/file2
  • 在系统中使用

    设置右键方式参考picUpload ,指令换成类似如下

    /YouHomeDir/FCM/fcm -u system "$@" | pbcopy
  • 在typora中使用

    打开typora设置,在图像选项卡,上传服务设定选择 Custom Command 自定义命令如下:

    /YouHomeDir/FCM/fcm -u typora

    image-20200506210347096

  • 删除文件

./fcm -del /path/to/file

下载

根据对应系统下载对应的版本 releases

TODO

  1. 继续修bug,完善项目。

  2. 支持数据库与云空间绑定,删除数据库某条数据时,从云空间也删除。

  3. 支持更多的数据库操作。

支持

直接提交 issues

到我的博客留言

本作品采用《CC 协议》,转载必须注明作者和本文链接
编程就像呼吸,学会那天起一日不敢荒废。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 1
ZsmHub

厉害,期待界面化

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!