Как я могу загрузить файл, используя `curl` вместо формы?

У меня есть клиент, клиент которого использует сторонний центр обмена информацией для получения счетов-фактур. Мы можем сделать это вручную, экспортировав наши данные в XML, перейдя на определенный веб-сайт и загрузив файл. Соответствующая HTML-форма выглядит следующим образом:

<form border=0
      method="POST"
      action="/server?request=send"
      enctype="multipart/form-data"
      id="uploadform"
      name="uploadform"
      onsubmit="return checkUpload()">
  <H2>Upload</H2>
  <p>Server directory:<br>
  <input type="text"
         id="directory"
         name="directory"
         value="./"
         size="30"></p>
  <p>Local file to be uploaded:<br>
  <input type="file"
         id="file"
         name="file"
         size="40"></p>
  <p><input type="submit" value="Send"></p>
</form>

Ручная отправка с использованием их веб-интерфейса работает нормально. Я пытаюсь написать быстрый инструмент, который отправляет форму для нас, используя curl. Я пробовал много разных попыток, но до сих пор каждая из них, хотя я получаю "Файл успешно загруженный"HTML-ответ, файл, который они получают, пуст.

Первоначально мы начали пытаться использовать curl, потому что именно так предложила нам сделать компания центра обмена информацией. Пример, который они привели, был следующим:

curl -i -k -H "Content-Type:application/octet-stream" 
  -d @test.txt -u username:password 
  https://example.com/server?request=send?filename=test.txt?directory=DX001

Когда это не сработало, я начал просматривать код в форме выше и попробовал следующее (находясь в том же каталоге, что и XML-файл):

curl -F "request=send" -F "directory=DX001" -F "file=33823.xml" 
  -u username:password -F "enctype="multipart/form-data"" 
  -F "id="uploadform"" https://example.com/server

Когда это не сработало, я подумал, что попробую абсолютный путь, даже если я был в тот же каталог:

curl -F "request=send" -F "directory=DX001" -F "file=/Users/chuck/Desktop/33823.xml" 
  -u username:password -F "enctype="multipart/form-data"" 
  -F "id="uploadform"" https://example.com/server

Каждый из них загружает только пустой файл (с указанным именем файла).

Как вы, вероятно, можете судить по полному пути, я делаю это с macOS, если это имеет значение.

Обратите внимание, что действие onsubmit в форме просто гарантирует, что ни directory, ни file входные данные не являются пустыми.