[Shell] 使用curl將文件上傳POST數據


Answers

將用戶標識捕獲為路徑變量(推薦):

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

捕捉用戶標識作為表單的一部分:

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

我想使用cURL不僅在HTTP POST中發送數據參數,而且還要上傳具有特定表單名稱的文件。 我應該怎麼做呢?

HTTP發布參數:

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命令?




如果您正在上傳二進製文件(如csv),請使用以下格式上傳文件

curl -X POST \
    'http://localhost:8080/workers' \
    -H 'authorization: eyJhbGciOiJIUzI1NiIsInR5cCI6ImFjY2VzcyIsInR5cGUiOiJhY2Nlc3MifQ.eyJ1c2VySWQiOjEsImFjY291bnRJZCI6MSwiaWF0IjoxNTExMzMwMzg5LCJleHAiOjE1MTM5MjIzODksImF1ZCI6Imh0dHBzOi8veW91cmRvbWFpbi5jb20iLCJpc3MiOiJmZWF0aGVycyIsInN1YiI6ImFub255bW91cyJ9.HWk7qJ0uK6SEi8qSeeB6-TGslDlZOTpG51U6kVi8nYc' \
    -H 'content-type: application/x-www-form-urlencoded' \
    --data-binary '@/home/limitless/Downloads/iRoute Masters - Workers.csv'