2015-02-11 61 views
1

我试图自动上传一个zip文件到github上的一个repo版本上。我使用github_api与Github的API进行交互。我可以通过该库创建发行版,但是当我尝试上传zip文件时,只传输了前425个字节。这是我与上传文件代码:我如何上传一个zip文件到ruby的github发布

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的后

file on disk

文件发布:

file uploaded to github

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

+0

你确定这是第425个字节?你有没有下载它看到?这不是像你上传绝对路径作为文件数据或任何东西? – 2015-02-11 20:32:15

+0

是的,我已将原始zip文件与下载的文件进行了比较。前425个字节是相同的。 – 2015-02-11 20:35:26

回答

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