代码之家  ›  专栏  ›  技术社区  ›  djangonaut

GitLab API:如何将大型二进制文件作为base64与其他key=值放在一起

  •  2
  • djangonaut  · 技术社区  · 7 年前

    我需要使用Gitlab API发送 放置 -使用curl(v.7.35.0)请求 key=value 参数。钥匙 content 需要是二进制文件内容。所以我需要将其作为base64发送,但之前我已经失败了。然而,大文件内容1.2MB是我不得不使用stdin作为curl的原因,其他语法抱怨URI/参数列表太大。

    从中获取了一些输入 https://unix.stackexchange.com/questions/174350/curl-argument-list-too-long . 但在curl中的参数组合仍然有点迷失。

    DATA="{
        \"author_email\": \"autoupdate-geoip@company.com\",
        \"author_name\": \"Autoupdater GeoIp\",
        \"branch\": \"${BRANCH_NAME}\",
        \"content\": \"this-should-be-file-content-of-GeoIP.dat\",
        \"commit_message\": \"Update GeoIP database\"
        \"encoding\": \"base64\"
    }"
    
    curl -X PUT -G "${GEOIP_URL}" \
        --header "PRIVATE-TOKEN: ${TOKEN}" \
        --header "Content-Type: application/json" \
        --data-urlencode @- <<EOF
    "${DATA}"
    EOF
    

    卷曲的常见替代品也适用于我。

    1 回复  |  直到 7 年前
        1
  •  1
  •   djangonaut    7 年前

    终于让它与此配合:

    base64 --wrap 0 GeoIP.dat > GeoIP.dat.base64
    curl -vvvv -X PUT  \
         --header "PRIVATE-TOKEN: ${TOKEN}" \
         --data-urlencode "author_email=autoupdate-geoip@company.com" \
         --data-urlencode "author_name=Autoupdater GeoIP" \
         --data-urlencode "branch=${BRANCH_NAME}" \
         --data-urlencode "commit_message=Autoupdate GeoIP Database" \
         --data-urlencode "encoding=base64" \
         --data-urlencode "file_path=some/path/geoip/GeoIP.dat" \
         --data-urlencode content@GeoIP.dat.base64 \
         "${GEOIP_URL}" | python -m json.tool