昨天,博客框架搭建好了,但写文章基本是文字内容,不太吸引人,美观程度不够。于是在gemini网页版上咨询,让它推荐几个中国大陆用的免费、稳定的,对WordPress兼容性好的,可以方便的批量上传图片、批量下载图片的图床。
答案如下:1. 极致便捷类:ImgBB (配合 WordPress 插件)
ImgBB 是目前全球最流行的免费图床之一,虽然服务器在海外,但它在中国大陆的访问速度尚可,且对 WordPress 的兼容性极佳。
特点:提供免费 32MB 的单张图片限制,不限制存储空间。
WordPress 兼容性:在 WordPress 插件库搜索 “ImgBB” 或使用 “One Click Upload” 类插件,可以直接在文章编辑页面上传图片并自动插入。
批量操作:网页端支持拖拽批量上传。下载通常需要借助浏览器插件或其提供的 API。
缺点:高峰期国内访问可能略有延迟。
2. 开发者首选(最稳定):Cloudflare R2 + WP 插件
如果你追求“永久稳定”和“极致速度”,Cloudflare R2 是目前的行业标杆。
特点:R2 每月提供 10GB 的免费存储额度,且出站流量免费。配合 Cloudflare 的 CDN,国内访问速度非常优秀。
WordPress 兼容性:配合 “Media Cloud” 或 “WP Offload Media” 插件,可以实现:
本地上传图片时自动同步到云端。
自动替换文章中的图片链接。
批量将媒体库中已有的图片同步到图床。
批量操作:直接在 WordPress 媒体库选中批量操作即可,非常方便。
3. 国内极客方案:GitHub / Gitee + PicGo + WordPress
这是很多国内博主的玩法,利用代码托管平台的免费空间作为存储。
特点:完全免费,国内访问(尤其是 Gitee 或使用了加速的 GitHub)很快。
工具链:使用桌面端软件 PicGo 批量上传图片。
WordPress 兼容性:配合插件如 “GitHub Poster” 或直接通过 PicGo 上传后获取 Markdown/HTML 链接粘贴。
或者使用插件 “Hacklog Remote Image Autosave”,当你粘贴图片链接时,它会自动抓取并处理。
批量操作:PicGo 本身就是为批量上传设计的,支持一次性拖入几十张图片并自动生成链接。
介绍一下Cloudflare R2 + WP 插件该如何设置,要求步骤详细,新手小白按照操作可以成功。
也许是天意,我没在 WordPress 插件库搜索到 “ImgBB” 。于是选择方案2,让它告诉我如何配置配置 Cloudflare R2(对象存储)配合 WordPress 使用,它说这是是目前性价比最高、最稳定的方案。R2 的优势在于 每月前 10GB 免费,且没有流量费(Egress Fees),这对比阿里云 OSS 或腾讯云 COS 能省下不少钱。
以下是为新手准备的详细配置指南:
第一步:创建 Cloudflare R2 存储桶 (Bucket)
登录 Cloudflare 控制台。
点击左侧菜单栏的 “R2”。如果是第一次使用,可能需要绑定一张外币信用卡(用于身份验证,只要不超额就不会扣费)。
点击 “Create Bucket” (创建存储桶)。

Bucket Name (桶名称):随便起一个名字(如 wpimage),记住这个名字。
点击 Create Bucket 确认。

第二步:获取 API 访问密钥
为了让 WordPress 插件有权把图片上传到 R2,你需要创建一个“通行证”。
在 R2 概览页面,点击右侧的 “Manage R2 API Tokens”。
点击 “Create API Token”。
Token name:输入 WordPress-Token。
Permissions (权限):选择 “Admin Read & Write” (管理员读写)。
TTL (有效期):选择 “Forever” (永久)。
点击底部的 Create API Token。


【重要】 屏幕上会显示 Access Key ID 和 Secret Access Key。立即复制并保存到记事本,关闭窗口后就再也看不到了。

第三步:配置自定义域名 (推荐)
虽然 R2 提供测试域名,但为了 SEO 和稳定性,建议绑定你自己的子域名(如 img.yourdomain.com)。
进入你刚才创建的存储桶,点击 “Settings” (设置) 选项卡。


找到 “Public Access” (公开访问)。
点击 “Connect Domain” (连接域名)。
输入一个子域名(例如 img.yourdomain.com),点击继续,Cloudflare 会自动帮你添加 DNS 记录。

第四步:在 WordPress 中安装并配置插件

这里推荐使用 “Advanced Media Offloader” (完全免费且轻量) 或 “Media Cloud”。
以 Advanced Media Offloader 为例:
在 WP 后台 插件 -> 安装插件,搜索并安装 “Advanced Media Offloader”。
安装完成后,在左侧菜单进入 Settings -> Media Offloader。

Provider (供应商):选择 S3 Compatible 或直接选 Cloudflare R2(如果插件版本已更新)。

填写信息:

Access Key ID:填入刚才保存的 ID。
Secret Access Key:填入刚才保存的 Key。
Bucket:填入你起的桶名(如 my-wp-media)。
Region:R2 统一填 auto。
Endpoint (端点):在 R2 桶的 Settings 页面可以找到 “S3 API URL”,长得像 https://<ID>.r2.cloudflarestorage.com。https://d31ba4deb9e9839eefa71dd12aa5c546.r2.cloudflarestorage.com/wpimage(不用包含桶的名字)
Custom Domain (自定义域名):填入你在第三步绑定的域名(如 https://img.yourdomain.com)。

test connection 成功。
开启选项:
Copy to Bucket:开启(上传图片时自动传到 R2)。
Rewrite Media URLs:开启(文章里的图片链接自动换成图床链接)。
Remove from Server:如果你想节省服务器空间,可以开启(上传到 R2 后自动删掉服务器本地的图片)。
常见问题说明
如何批量处理旧图片? 如果你的网站已经有很多图片了,大部分插件的专业版支持“一键同步旧图片”。如果是免费版,你可能需要手动使用 Rclone 工具或者重新上传。
关于 10GB 限制: 对于大多数个人博客,10GB 可以存储数万张经过压缩的图片。如果图片非常多,建议配合 “ShortPixel” 等插件先压缩再上传。

设置项逐项确认:
Auto-Offload Media (勾选状态):正确。这保证了当你上传新图片时,WordPress 会自动将其发送到 Cloudflare R2。
Retention Policy (选择 Retain Local Files):正确且稳妥。
这意味着图片上传到 R2 后,你的服务器上依然会保留一份副本。
优点:万一 R2 配置出问题,你的本地图片还在,不会导致网站图片全屏“开天窗”;也方便你随时导出备份。
Custom Path Prefix (未勾选):正确。除非你希望将图片放在桶内特定的文件夹里(例如 blog/images/),否则默认不勾选即可,图片会按日期自动组织(如 /2026/02/)。
Mirror Delete (未勾选):建议勾选(视情况而定)。
如果你在 WordPress 媒体库里删掉了一张图片,勾选此项后,R2 里对应的图片也会被自动删掉。
如果不勾选,你在 WordPress 删了图,R2 里还会一直存着那张图,占用微小的空间。通常建议勾选以保持空间整洁。
完成后的两个检查动作:
设置完这个页面并点击“保存更改”后,请务必确认以下两点:
URL 重写检查:虽然你设置了上传,但一定要确认插件的 “Rewrite URLs”(通常在另一个标签页或下方)是开启的。只有开启了它,文章里的图片链接才会变成 img.yourdomain.com/…。
但是,有遇到一个疑问,本地电脑上原图很大,比如4M,上传到WordPress中,它会压缩成webp那种小格式吗。我需要这个功能该怎么操作。
Ai回复:
对于新手小白,以下是针对你“自动压缩并同步 R2”需求的详细配置建议:
一、 EWWW 核心参数配置(参考你的第二张截图)
WebP Conversion (关键步):
操作:勾选这个选项。
注意:勾选后会弹出一个警告提示(如截图所示),点击 “Continue” 即可。这能让你的 4MB 大图变成几十 KB 的 WebP 格式。
Resize Images (尺寸限制):
操作:截图中的 1920 (Max Width) 和 2560 (Max Height) 是非常合理的设置。
作用:这意味着如果你上传一张手机拍摄的 5000 像素巨图,它会自动被缩减到 1920 像素宽。这是减小文件体积最有效的手段。
Remove Metadata (建议勾选):
操作:保持勾选状态。
作用:移除图片包含的拍摄地点、相机参数等冗余信息,进一步减小体积。
Lazy Load (建议勾选):
操作:保持勾选状态。
作用:图片进入视口才加载,极大提升网页打开速度。
二、 关于占用服务器资源的疑问
会占用资源吗? 是的,图片压缩是一个计算密集型的任务,在上传图片的那几秒钟内,CPU 占用率会明显升高。
对你的影响:如果你的服务器配置较低(如 1核1G),一次性批量上传几十张图片可能会导致网站后台短暂变慢。
如何缓解:单张上传:平时写文章传图,这种负载几乎感觉不到。批量处理:如果你有成百上千张旧图要处理,建议在深夜访客少的时候进行。
三、 检查 R2 同步配置
为了确保 EWWW 压缩后的“小图”能顺利传给 R2,请检查:
Retention Policy:你选择了 “Retain Local Files”。
这是正确的:因为 EWWW 需要在本地处理完图片后,再由插件把处理好的 WebP 版本传给 R2。
Mirror Delete:建议勾选 “Sync Deletion with Cloud Storage”。
原因:这样当你在 WordPress 媒体库删掉测试图片时,R2 里的垃圾文件也会被自动清理,保持空间整洁。
四、 终极验证步骤
配置好以上两张截图的内容后,请按此步骤测试:
准备一张电脑上的大图(比如 4MB 的摄影图)。在 WordPress 媒体库上传。上传完成后,点击那张图片查看详情。
看地址:URL 应该是你的 R2 域名(如 img.xxx.com/…)。
看文件大小:你会发现原本 4MB 的图,现在可能只剩下 200KB 左右,且格式变成了 .webp。
如果你在设置 WebP Conversion 时看到右下角有一个红色的“不可用”提示,那可能需要联系主机商开启服务器的 GD 或 Imagick 组件,但通常主流服务器都是默认开启的。

经过上面的操作,我以为万事大吉了。谁知道又遇到新问题,大于2MB的图片插入到WordPress文章时,提示“此文件超过了本站点的最大上传大小”。

比较好解决,我把vps的情况、docker虚拟wp的情况告诉ai,用下面的方法成功解决图片等文件上传限制2MB大小问题(我安装并设置了big file uploads 为6mb,仍然提示不能上传。没有cpanel面板。服务器有nginx后台,我是用docker安装的wp,这是目录/opt/docker_apps/wp_data,里面看到了.htaccess文件。)
我们需要在两个关键位置输入代码来彻底解除 2MB 的上传限制。
以下是具体的代码内容和填写位置:
1. NPM 的“高级 (Advanced)”选项卡
在 NPM 的编辑窗口中,你需要告诉 Nginx 允许更大的数据流通过。
输入位置:NPM 后台 -> sdnas.cn.eu.org 的编辑界面 -> Advanced 标签页。
输入代码:
client_max_body_size 64M;

注:这行代码的意思是把“门禁”放宽到 64MB。
2. WordPress 根目录的 .htaccess 文件
在你的服务器目录 /opt/docker_apps/wp_data/.htaccess 中,你需要告诉 PHP 允许处理更大的文件。
输入位置:文件的最顶部(在 # BEGIN WordPress 之前,这样优先级最高)。
输入代码:
php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value memory_limit 128M

别忘了本地修改后替换vps上才能发挥作用。
为什么需要这两处代码?
你可以把上传图片想象成搬家进屋:
NPM 代码是把“院子大门”改宽,否则大卡车(大图片)根本进不了院子。
.htaccess 代码是把“房门”改宽,否则货进到院子里也进不了屋。
操作完后的检查
保存 NPM 设置:点击 Save 后,配置会立即生效。
重启 WordPress 容器(可选但推荐): 在 SSH 终端执行:
cd /opt/docker_apps/
docker-compose restart wordpress
查看结果:回到 WordPress 后台 -> 媒体 -> 添加。查看下方的“最大上传文件大小”是否已经从 2MB 变成了 64MB。
操作建议:在填写完上述代码并确认可以上传大图后,请回到 EWWW 设置页面,勾选 WebP Conversion,然后点击下方蓝色的 “Continue”。
好处:这样即便你上传了 6MB 的图,它也会在你的服务器里被压缩成几百 KB 的 WebP 格式,然后再由插件同步到 Cloudflare R2,既省流量又快。
以下是成功解决问题的截图:
打开《测试图片插入后ewww进行压缩,同步到cloudflareR2,同时把文章中图片转成R2中链接。解除图片上传2MB大小的限制方法》链接后,在图片上右键,复制图像连接,变成了
https://img.sdnas.cn.eu.org/2026/02/%E5%BE%AE%E4%BF%A1%E5%9B%BE%E7%89%87_20240129142330.jpg,与此前在cloudflare r2中绑定的域名一致。图片另存在本地电脑后,图片766kb,原始图片2.7MB,图片已经成功压缩。

从博客文章中下载图像大小766K

登录cloudflare R2的图片桶,可以看到以202602命名的文件夹。里面有该图片各种分辨率的图片。

