背景

之前我们使用图床是用 picGo 上传到 R2 上,然而这个工具有一个严重的问题,多客户端同步的问题。使用一段时间就不再使用了。 一直在想,能不能做一个网页版的图床,使用网页上传,最好不做元数据存储,直接读取 R2 的目录。

调研

站在巨人的肩膀行走事半功倍,我开始找轮子,github 上搜了搜,找到一个还不错的工具 liangliangle/roim-picx, 已经实现了我想要的功能,对我来说足够了

  • 图片批量上传
  • 图片列表查询
  • 图片删除
  • 目录创建
  • 按目录查询
  • 链接地址点击复制
  • 简单的身份认证功能,进入管理页面需要授权

部署上去试了试,整体对我来说很适合,简单记录一下部署过程。

部署

该项目使用了 Cloudflare 的两个能力

  1. R2:图片存储
  2. Pages:提供页面访问

Pages 中使用了 functions 作为后端服务,步骤如下:

1. fork 项目到自己的 github

fork 完项目后可以根据自己需要修改网站标题和链接地址,网站首页在src\App.vue

X1UrTfK.png

2. 创建 Pages 项目

输入编译参数

框架预设:无

构建命令:npm run build

输出目录:dist

80jsTfK.png

3. 设置环境变量和绑定 R2

1.环境变量:

  • AUTH_TOKEN:授权码
  • COPY_URL:复制的路径,如无,则输入 pages域名/rest

RzwsTfK.png

2.绑定R2

变量名为:R2

RsJTTfK.png

4. 重新部署让环境变量生效

魔改

使用过程中发现原作者一些小细节功能没有我需要的,我在他的基础上做了修改

1. 图片链接复制格式选择

CgZUTfK.png

2. 图片预览

KBRvTfK.png

魔改后的代码地址:waveCodeSite/roim-picx