shell - फाइलों के साथ पोस्ट डेटा अपलोड करने के लिए कर्ल का उपयोग करना




file curl (4)

मैं केवल HTTP पोस्ट में डेटा पैरामीटर न भेजने के लिए कर्ल का उपयोग करना चाहता हूं लेकिन विशिष्ट फॉर्म नाम के साथ फाइल अपलोड भी करना चाहता हूं। मुझे ऐसा करने के लिए कैसे जाना चाहिए?

HTTP पोस्ट पैरामीटर:

userid = 12345 filecomment = यह एक छवि फ़ाइल है

HTTP फ़ाइल अपलोड: फ़ाइल स्थान = /home/user1/Desktop/test.jpg फ़ाइल = छवि के लिए फॉर्म नाम (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

समस्या यह है कि मैं PHP स्क्रिप्ट में फ़ाइलों को लेने के लिए $ _FILES ['image'] का उपयोग कर रहा हूं।

मैं तदनुसार अपने कर्ल आदेश कैसे समायोजित करूं?


आपको -F विकल्प का उपयोग करने की आवश्यकता है:
-F/--form <name=content> Specify HTTP multipart POST data (H)

इसे इस्तेमाल करे:

curl \
  -F "userid=1" \
  -F "filecomment=This is an image file" \
  -F "[email protected]/home/user1/Desktop/test.jpg" \
  localhost/uploader.php

उपयोगकर्ता आईडी को पथ चर के रूप में पकड़ना (अनुशंसित):

curl -i -X POST -H "Content-Type: multipart/form-data" 
-F "[email protected]" http://mysuperserver/media/1234/upload/

फ़ॉर्म आईडी के रूप में उपयोगकर्ता आईडी को पकड़ना:

curl -i -X POST -H "Content-Type: multipart/form-data" 
-F "[email protected];userid=1234" http://mysuperserver/media/upload/

यदि आप सीएसवी जैसे बाइनरी फ़ाइल अपलोड कर रहे हैं, तो फ़ाइल अपलोड करने के लिए नीचे प्रारूप का उपयोग करें

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'

bash साथ अपलोड की गई फ़ाइलों के मनमाने ढंग से फ़ाइल नामों को सही ढंग से कैसे बचें यहां बताया गया है:

#!/bin/bash
set -eu

f="$1"
f=${f//\\/\\\\}
f=${f//\"/\\\"}
f=${f//;/\\;}

curl --silent --form "[email protected]\"$f\"" "$2"






file-upload