ZOU YING

Coding 💻, Gopher 🐶, AI 🤖️

RSS订阅

关于

Golang+腾讯云COS自制免费河床

利用Golang和腾讯云的对象存储实现自己免费的河床。

在写个人博客的过程,网站会引用大量的图片。由于我的网站搭建在国外服务器上,图片都从国外服务器中加载,国内用户访问的速度就会非常慢,也没有CDN加速。

1.0 版本:免费河床

为了让网站加速,网站的代码仍然放在国外的服务器上。图片上传到国内的一些免费河床中,网站中使用这些图床的地址。

网上提供了很多免费的河床工具,比如这个利用新浪可以免费使用(点击)。上传图片后,可以得到图片地址。

免费河床

在使用一段时间后,一是担心图片丢失的问题,图片链接可能因为各种原因会被删除了,这样要再找回对应的图片就比较麻烦了。二是很多网站上传的图片会被打上水印。三是自己的图片数据也没有得到有效的备份。

为了自己更好的保存图片,就想到把所有的图片都上传到国内的云计算中。

2.0版本:云计算

经过对各种云计算服务的调研后,发现对象存储用来保存个人图片非常便宜。比如我现在使用的腾讯云对象存储COS,注册以后个人用户可以免费使用6个月、50GB的存储空间。即使6个月到期后,收费也很低。具体的价格可以参考:产品定价

Golang开发图片上传小工具

图片来源一般分为本地和远程的:

  1. 远程地址:直接使用其他网站的原始图片
  2. 本地文件:

    1. 从网站下载图片进行修改
    2. 使用本地的图片文件

对于第1种情况,为了防止原始图片被删除导致图片链接丢失或产生“盗链”错误,我会进行下列几步操作:

  • 下载图片到本地
  • 打开浏览器,登陆腾讯云,上传图片到到对象存储
  • 打开图片的属性,获取到图片的链接地址

为了每次减少上列繁琐的步骤,就使用Golang写了个小工具,帮我做完成图片上传到对象存储的过程。工具源码在:github my-image-gallery

编译

git clone git@github.com:xpzouying/my-image-gallery.git

cd my-image-gallery/upload-images-cos/

go build -o upload .

配置腾讯云对象存储

  1. 点击创建新的存储桶
  2. 配置权限,选择共有读,私有写

工具使用说明

启动参数,二选一:

  • -http:指定远程图片地址
  • -file:指定本地文件路径

环境变量:

  • COS_BUCKET:上传的目标存储桶
  • COSSECRETID / COSSECRETKEY:认证
# export environment for cos
export COS_BUCKET="you-bucket"
export COS_SECRETID="you-secret-id"
export COS_SECRETKEY="you-secret-key"

# upload http image file
./upload -http http://localhost:8080/image1.jpg

# or upload local file
./upload -file /tmp/1.jpg

示例

upload demo

© 2018 - 2019 Ying Zou.

You can Contact Me