我正在使用GitLab API创建存储库存档,当我这样做时会创建一个zip文件,里面有一个zip,里面有一个zip等。
以下是发出请求的代码:
def self.get_archive(project_id, branch)
request = Typhoeus::Request.new(
BASE_URL + "/projects/#{project_id}/repository/archive?sha=#{branch}",
method: :get,
params: nil,
headers: {
"PRIVATE-TOKEN": ADMIN_TOKEN
}
)
request.run
response = request.response
if response.success?
file_name = "archive-#{SecureRandom.hex(5)}.zip"
File.open(Rails.root + "public/archives/" + file_name, "wb") do |file|
file.write(response.body)
end
return {
success: true,
file_path: "/archives/" + file_name
}
else
return {
success: false,
response_raw: response
}
end
end
对于出了什么问题的想法?我在这里想的是拿回我得到的二进制文件并将其写入zip文件。
答案 0 :(得分:0)
事实证明,GitLab默认发回tar.gz文件。要接收Zip文件,您必须在请求结束时明确指定.zip扩展名。像这样:
"/projects/#{project_id}/repository/archive.zip?sha=#{branch}"
"存档"结束时的.zip是重要的因素。