如何将zip文件上传到ruby中的github版本

时间:2015-02-11 20:14:58

标签: ruby file-upload github github-api

我正在尝试自动将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)。请求成功,但上传的文件只是整个文件的一部分。

系统档案:

file on disk

上传到github发布后的文件:

file uploaded to github

从github下载文件后,我注意到425字节是我build.zip的第一个425字节,但后来它似乎被截断了。有没有人遇到过这个?

1 个答案:

答案 0 :(得分:0)

使用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