у меня есть клиент, который использует клиринговую палату третьей стороны для получения счетов. Мы можем сделать это вручную, экспортировав наши данные в 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
входы пусты.