Загруженный архив GitLab, использующий API GitLab, кажется поврежденным

Я использую cURL для загрузки репозитория из GitLab, используя их API. Все это делается с помощью PHP. Код ниже:

$zipResource = fopen('archive.zip', 'w');

$ch = curl_init("http://example.com/api/v3/projects");

curl_setopt($ch, CURLOPT_HTTPHEADER, array("PRIVATE-TOKEN: private_token_goes_here"));

curl_setopt($ch, CURLOPT_URL, "http://example.com/api/v3/projects/64/repository/archive");

curl_setopt($ch, CURLOPT_FILE, $zipResource);

curl_exec($ch);

curl_close($ch);

Краткий обзор: создайте пустой zip-файл. Подключитесь к серверу, получите архив и запишите его в zip-файл.

Архив появляется на сервере, я могу его скачать, и я могу разархивировать его, когда дважды щелкну по нему, все файлы есть, и все, кажется, в порядке.

Однако, когда я пытаюсь разархивировать его с помощью терминала, появляется следующая ошибка:

Archive:  archive.ZIP
End-of-central-directory signature not found.  Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive.  In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.

То, что я пробовал до сих пор, было:

Установка заголовков как "Content-type: application/zip", Установка заголовков как "Content-Transfer-Encoding: Binary"(с типом файла архива в 'wb' //binary) или же "Content-type: application/octet-stream" и так далее. Конечный результат всегда был одним и тем же, то есть я получал ошибку, упомянутую выше, при попытке распаковать архив.

Я могу только предположить, что я либо неправильно использую cURL, либо неправильно настраиваю заголовки, либо что-то не так с их API (очень маловероятно).

Любое подталкивание в правильном направлении очень ценится.

1

Решение

Я столкнулся с той же проблемой с Gitlab. Скачать как tar в моем случае работает нормально. Я также обнаружил, что загруженный ZIP-файл фактически содержит все данные, но поврежден. Данные из ZIP-файла все еще можно восстановить, если установлена ​​Java:

jar xvf corrupted-zip-file.zip
0

Другие решения

Других решений пока нет …