首页  >  问答  >  正文

使用cURL上传带有文件的POST数据

<p>我想使用cURL不仅可以在HTTP POST中发送数据参数,还可以上传具有特定表单名称的文件。我该如何做到这一点?</p> <p>HTTP POST参数:</p> <p>userid = 12345 filecomment = 这是一个图片文件</p> <p>HTTP文件上传: 文件位置 = /home/user1/Desktop/test.jpg 文件的表单名称 = image(对应于PHP端的$_FILES['image'])</p> <p>我已经找到了cURL命令的一部分,如下所示:</p> <pre class="brush:php;toolbar:false;">curl -d "userid=1&filecomment=这是一个图片文件" --data-binary @"/home/user1/Desktop/test.jpg" localhost/uploader.php</pre> <p>我遇到的问题如下:</p> <pre class="brush:php;toolbar:false;">注意:在/var/www/uploader.php中未定义索引:image</pre> <p>问题是我在PHP脚本中使用$_FILES['image']来接收文件。</p> <p>我应该如何相应地调整我的cURL命令?</p>
P粉541796322P粉541796322395 天前391

全部回复(2)我来回复

  • P粉189606269

    P粉1896062692023-08-22 11:11:35

    将用户id作为路径变量捕获(推荐):

    curl -i -X POST -H "Content-Type: multipart/form-data" 
    -F "data=@test.mp3" http://mysuperserver/media/1234/upload/

    将用户id作为表单的一部分捕获:

    curl -i -X POST -H "Content-Type: multipart/form-data" 
    -F "data=@test.mp3;userid=1234" http://mysuperserver/media/upload/

    或者:

    curl -i -X POST -H "Content-Type: multipart/form-data" 
    -F "data=@test.mp3" -F "userid=1234" http://mysuperserver/media/upload/

    回复
    0
  • P粉621033928

    P粉6210339282023-08-22 00:18:22

    您需要使用-F选项:
    -F/--form <name=content> 指定HTTP多部分POST数据 (H)

    请尝试以下内容:

    curl \
      -F "userid=1" \
      -F "filecomment=这是一个图片文件" \
      -F "image=@/home/user1/Desktop/test.jpg" \
      localhost/uploader.php

    回复
    0
  • 取消回复