Короткая версия: вы не можете. Это не так, как работает HTTP. Вы можете отправить один блок данных в одном запросе POST, но вы пытаетесь отправить два (строку JSON и файл).
Более длинная версия: это зависит от того, что ожидает ваш сервис. Предполагается, что данные из файла являются частью JSON? Затем вам нужно предварительно обработать JSON и поместить в него данные файла, чтобы вы отправили -d '{"file": "<your file data here>", "filename": ... }'
Предполагается ли, что файл является полем формы с именем "file", а данные JSON являются содержимым поля с именем "json"? Затем вы можете отправить оба, используя -F file=@/users/uid/model.tar.gz -F 'json={...}'
. Curl позаботится о включении их в блоб, так же, как если бы у вас была форма браузера с двумя полями.
(обратите внимание также на знак @
перед именем файла; вам нужно это, иначе вы отправляете строку "/users/uid/model.tar.gz")
Это что-то еще? Может быть, вы должны сначала отправить данные, а потом JSON?