如何使用github repo像CDN服务器一样上传资产文件?

时间:2016-12-23 05:58:18

标签: ruby-on-rails ruby git github cdn

我正在铁轨上学习红宝石。我正在开发rails 5应用程序。 我不想使用amazon s3服务来包含我的资产文件。 我想使用github来提供我的资产文件,就像CDN一样。

但是我遇到了问题,我有动态文件和图片上传系统。 因此,当我上传文件和图像时,所有文件和图像都将上传到github存储库中(假设我有一个名为busket的git repo;因此,所有图像和文件都将上传到{{ 1}}来自我的服务器的repo,将从rails应用程序提供所有资产。)

那么,我如何使github像CDN一样?请帮我解决这个问题。

4 个答案:

答案 0 :(得分:2)

我觉得将图像和一般类型的内容文件上传到GitHub进行长期存储通常是个坏主意。 GitHub被设计成Git的存储库提供者,而不是NoSQL或其他类型的数据存储。在GitHub中更新文件需要对特定分支进行提交。因此,每次更改图像文件时,都需要新的提交。这不会扩展,因为Git不能很好地处理二进制文件。

因此,如果您需要为图像和内容文件建立长期数据存储,我建议您查看专为此设计的工具,例如亚马逊的S3,Google云存储以及类似的内容。

答案 1 :(得分:0)

1。)将图像编码到基础64 参考:http://ruby-doc.org/stdlib-2.2.0/libdoc/base64/rdoc/Base64.html

2。)对github进行API调用

参考:https://developer.github.com/v3/repos/contents/#create-a-file

这将在github中上传并返回您存储的图像的URL,并将其存储在您的数据库中。

虽然您声明自己并不想使用S3,但回形针宝石却非常精简。

答案 2 :(得分:0)

如@Tim所述,通常这是一个坏主意。 但是,如果您仍然想将Git用作文件服务器,请附加

  

?raw = true

URI末尾的

。 例如

  

https://github.com/git/git/blob/master/ewah/bitmap.c?raw=true

将为您提供文件的内容。

答案 3 :(得分:0)

https://cdn.jsdelivr.net/gh/username/repository/file

username = github用户的名称
仓库= github repo的名称
文件=文件的实际名称