如何使用 github repo 作为 CDN 服务器上传资产文件?
How to use github repo as like CDN server for uploading assets file?
我正在 rails 学习 ruby。我正在开发 rails 5 应用程序。
我不想使用 amazon s3 服务来包含我的资产文件。
我想使用 github 来像 CDN 一样提供我的资产文件。
但是我遇到了一个问题,我有动态文件和图片上传系统。
因此,当我上传我的文件和图像时,所有文件和图像都将上传到 github 存储库(假设,我有一个名为 busket
的 git 存储库;所以,所有图片和文件将从我的服务器上传到 busket
存储库,并将提供来自 rails 应用程序的所有资产。
那么,我怎样才能使 github 像 CDN 一样?请帮我解决这个问题。
我觉得将图像和一般类型的内容文件上传到 GitHub 以进行长期存储通常不是一个好主意。 GitHub 旨在成为 Git 的存储库提供程序,而不是作为 NoSQL 或其他类型的数据存储。更新 GitHub 中的文件需要提交到特定分支。因此,每次更改图像文件时,都需要重新提交。这不会扩展,因为 Git 不能很好地处理二进制文件。
因此,如果您的图像和内容文件需要长期数据存储,我建议您研究专为此设计的工具,例如亚马逊的 S3、Google 云存储,以及类似于这个。
1.) 将图像编码为base 64
参考:http://ruby-doc.org/stdlib-2.2.0/libdoc/base64/rdoc/Base64.html
2.) API 调用 github
参考:https://developer.github.com/v3/repos/contents/#create-a-file
这将上传 return 您在 github 内存储的图像 url,并将其存储在您的数据库中。
虽然您表示不想使用 S3,但回形针 gem 使它变得非常精简。
如@Tim 所述,这通常是个坏主意。
但是,如果您仍想使用 Git 作为文件服务器,请附加
?raw=true
在 URI 的末尾。
例如
https://github.com/git/git/blob/master/ewah/bitmap.c?raw=true
会给你文件的内容。
https://cdn.jsdelivr.net/gh/username/repository@master/file
username = github
的用户名
存储库 = github 存储库
的名称
file = 文件的实际名称
我正在 rails 学习 ruby。我正在开发 rails 5 应用程序。 我不想使用 amazon s3 服务来包含我的资产文件。 我想使用 github 来像 CDN 一样提供我的资产文件。
但是我遇到了一个问题,我有动态文件和图片上传系统。
因此,当我上传我的文件和图像时,所有文件和图像都将上传到 github 存储库(假设,我有一个名为 busket
的 git 存储库;所以,所有图片和文件将从我的服务器上传到 busket
存储库,并将提供来自 rails 应用程序的所有资产。
那么,我怎样才能使 github 像 CDN 一样?请帮我解决这个问题。
我觉得将图像和一般类型的内容文件上传到 GitHub 以进行长期存储通常不是一个好主意。 GitHub 旨在成为 Git 的存储库提供程序,而不是作为 NoSQL 或其他类型的数据存储。更新 GitHub 中的文件需要提交到特定分支。因此,每次更改图像文件时,都需要重新提交。这不会扩展,因为 Git 不能很好地处理二进制文件。
因此,如果您的图像和内容文件需要长期数据存储,我建议您研究专为此设计的工具,例如亚马逊的 S3、Google 云存储,以及类似于这个。
1.) 将图像编码为base 64 参考:http://ruby-doc.org/stdlib-2.2.0/libdoc/base64/rdoc/Base64.html
2.) API 调用 github
参考:https://developer.github.com/v3/repos/contents/#create-a-file
这将上传 return 您在 github 内存储的图像 url,并将其存储在您的数据库中。
虽然您表示不想使用 S3,但回形针 gem 使它变得非常精简。
如@Tim 所述,这通常是个坏主意。 但是,如果您仍想使用 Git 作为文件服务器,请附加
?raw=true
在 URI 的末尾。 例如
https://github.com/git/git/blob/master/ewah/bitmap.c?raw=true
会给你文件的内容。
https://cdn.jsdelivr.net/gh/username/repository@master/file
username = github
的用户名
存储库 = github 存储库
的名称
file = 文件的实际名称