如何使用“ curl”重复提交此表单?

时间:2018-07-09 15:55:27

标签: 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>

使用其Web界面手动提交可以正常工作。我正在尝试编写一种快速的工具,该工具使用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操作只是确保directoryfile输入都不为空。

0 个答案:

没有答案