如何将zip文件上传到ruby中的github版本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将zip文件上传到ruby中的github版本相关的知识,希望对你有一定的参考价值。
我正在尝试自动将zip文件上传到github上的repo上的发行版。我正在使用github_api与Github的api进行交互。我可以通过该库创建一个版本,但是当我尝试上传我的zip文件时,只传输了前425个字节。这是我上传文件的代码:
files = Dir["<dir_containing_zipefile>"]
files.each do |file|
github.repos.releases.assets.upload "Owner", "Repo", id, File.absolute_path(file),
name: "#{File.basename file}",
content_type: "application/zip"
end
我从之前的请求中得到了id
,并确保这是正确的。我还确保找到的文件是正确的文件(basename和absolute_path)。请求成功,但上传的文件只是整个文件的一部分。
系统上的文件:
上传到github发布后的文件:
从github下载文件后,我注意到425字节是我的build.zip的第一个425字节,但后来它似乎被截断了。有没有人遇到过这个?
答案
使用Net::HTTP
require 'net/http'
require 'json'
def attach(url, zipFilePath)
data = File.open(zipFilePath, "rb") { |f| f.read }
uri = URI.parse(url)
request = Net::HTTP::Post.new(uri)
request["Authorization"] = "Bearer #{YOUR_GITHUB_ACCESS_TOKEN}"
request.content_type = 'application/zip'
request.body = data
response = Net::HTTP.start(uri.hostname, uri.port, { use_ssl: true }) { |http| http.request(request) }
return JSON.parse(response.body)
end
以上是关于如何将zip文件上传到ruby中的github版本的主要内容,如果未能解决你的问题,请参考以下文章
如何通过 CLI 将 zip 文件上传和部署到 AWS elastic beanstalk?
如何在不使用 Ruby 保存到磁盘的情况下生成 zip 文件?