我想使用cURL不仅可以在HTTP POST中发送数据参数,还可以上传具有特定表单名称的文件 . 我应该怎么做呢?
HTTP Post参数:
userid = 12345 filecomment =这是一个图像文件
HTTP文件上传:文件位置= /home/user1/Desktop/test.jpg file = image的表单名称(对应于PHP端的$ _FILES ['image'])
我认为cURL命令的一部分如下:
curl -d "userid=1&filecomment=This is an image file" --data-binary @"/home/user1/Desktop/test.jpg" localhost/uploader.php
我得到的问题如下:
Notice: Undefined index: image in /var/www/uploader.php
问题是我使用$ _FILES ['image']来获取PHP脚本中的文件 .
如何相应调整cURL命令?
6 回答
作为
curl
的替代方案,您可以使用HTTPie,它是一种CLI,类似cURL的人类工具 .安装说明:https://github.com/jakubroztocil/httpie#installation
然后,运行:
以下是如何使用
bash
正确转义上传文件的任意文件名:您需要使用
-F
选项:-F/--form <name=content> Specify HTTP multipart POST data (H)
试试这个:
将用户标识捕获为路径变量(推荐):
将用户标识作为表单的一部分捕获:
要么:
如果您要上传csv等二进制文件,请使用以下格式上传文件
这是我的解决方案,我一直在阅读很多帖子,他们真的很有帮助 . 最后我为小文件编写了一些代码,使用cURL和PHP,我认为它非常有用 .
有了这个,我们应该在"api.endpoint.post"上发布以下vars . 您可以使用此脚本轻松进行测试,并且您应该在最后一行的函数
postFile()
上接收此调试 .它应该运行良好,它们可能是更好的解决方案,但这有效,并且非常有助于理解Boundary和multipart / from-data mime如何在PHP和cURL库上运行 .