本文是《Solo 从设计到实现》的一个章节,该系列文章将介绍 Solo 这款 Java 博客系统是如何从无到有的,希望大家能通过它对 Solo 从设计到实现有个直观地了解、能为想参与贡献的人介绍清楚项目,也希望能为给
重复发明重新定义博客系统的人做个参考 ❤️
自 v3.0.0 开始,Solo 内置了 HTTPS + CDN 文件存储,用户只需配置好 B3 Key 就可以直接使用,允许上传的最大单个文件为 10M。
背景和动机
早期的 Solo 是支持用户自己配置七牛云、阿里云 OSS 的,随着用户反馈使用情况,我们注意到几个问题:
- 需要自行创建、配置第三方对象存储服务,虽然不困难,但对于大部分人来说还是有点繁琐
- 要使用第三方对象存储服务的 HTTPS + CDN 是需要付费的
另外,对于使用服务器本地存储我们是不赞成的:
- 服务器带宽一般较小,如果要高速渲染图片或下载文件对带宽有一定要求
- 自己运维的服务器相对于第三方服务来说不是非常可靠,较容易造成数据丢失
- 迁移服务器需要迁移文件图片,这一步运维操作很容易被遗漏
所以我们比较推荐用户使用第三方对象存储服务。但如果每个用户都要去做一次第三方对象存储配置的话不如让社区统一来做一次,这样在整体上是效率最高的,可以在很大程度上方便用户。
使用方式
- 在管理后台 -> 工具 -> 用户管理中选择用户并更新 B3 Key
- 在社区个人设置 - B3 中更新为和博客端一样的 B3 Key
配置好后博客端就可以通过编辑器直接上传文件或者图片了,数据会被存储在社区维护的七牛云对象存储服务中,并且配置了 HTTPS + CDN。
实现流程
技术方面主要通过浏览器 CORS 实现跨域上传,完整的交互流程请看下图。
1. 获取上传凭证并在本地缓存
2. 用户浏览器 CORS 跨域上传
为了简单,只画了正常成功情况的交互,并省略了一些校验处理细节。
关于 CORS 的更多知识可参考阮一峰前辈的文章:跨域资源共享 CORS 详解
靠爱发电
目前社区的图床服务完全是靠爱发电,所以请大家不要滥用:
- 请仅在博客端使用,不要外链
- 请勿上传非法违规图片或文件
欢迎通过社区赞助系统对我们进行支援 💝
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于