ส่งภาพที่เข้ารหัส base64 โดยใช้ curl


8

ฉันพยายามที่จะส่งภาพที่เข้ารหัส base64 จากบรรทัดคำสั่งโดยใช้curlและbase64เช่นนี้:

curl -X POST -H "Content-Type: application/json" -d '{"image" : $( base64 ~/Pictures/1.jpg )}' http://some/url/  

อย่างไรก็ตามฉันได้รับการตอบกลับว่า$เป็นโทเค็นที่ไม่คาดคิด ฉันจะส่งภาพที่เข้ารหัส base64 ได้อย่างไร

คำตอบ:


20

@muru ถูกต้อง แต่ถ้าคุณพยายามส่งjson ที่เข้ารหัสข้อมูล base64 ของคุณอาจใหญ่เกินไปสำหรับบรรทัดคำสั่งและคุณอาจชอบสิ่งนี้:

(echo -n '{"image": "'; base64 ~/Pictures/1.jpg; echo '"}') |
curl -H "Content-Type: application/json" -d @-  http://some/url/ 

ก็ส่อให้เห็นโดย-X POST-d


ใช่ดีกว่านี้มาก
muru

สวัสดี, ฉันล้มเหลวเมื่อฉันพยายามเรียกใช้บรรทัดคำสั่งรวมนี้จากรหัส PHP, $ html = shell_exec ($ str); ถ้าฉันคัดลอกรหัส str $ และเรียกใช้โดยตรงในบรรทัดคำสั่งก็ไม่เป็นไร แต่ shell_exec ไม่ทำงานโปรดช่วย :( ขอบคุณมาก
B --o Nam

ฮ่าฮ่าฉันสร้างไฟล์ bash, chmod + x ไฟล์นั้นจากนั้นเขียนคำสั่งของฉันไปที่ไฟล์และเรียกใช้ shell_exec ('/ path to sh file / xxx.sh'); ฉันทำงานเหมือนมีเสน่ห์ ขอบคุณ
Bảo Nam

1
@ BảoNam Ok ทางออกที่ดี ฉันไม่ได้เกี่ยวกับ php มากนักและฉันไม่เห็นเหตุผลที่ชัดเจนว่าทำไมเวอร์ชันแรกไม่ทำงาน ค้นหาในไฟล์บันทึกข้อผิดพลาดของเซิร์ฟเวอร์เพื่อหาเบาะแส คุณน่าจะดีกว่าถ้าเริ่มคำถามใหม่เมื่อ php เกี่ยวข้องฉันคิดว่า
meuh

5

Bash ไม่ขยายในเครื่องหมายคำพูดเดี่ยว '{"image" : $( base64 ~/Pictures/1.jpg )}'ได้รับการส่งตามที่เป็น ให้ลอง:

'{"image" : "'"$( base64 ~/Pictures/1.jpg)"'"}'

(ออกจากคำพูดเปิดก่อนที่จะทำการทดแทนคำสั่งจากนั้นเปิดอ้างอีกครั้ง)


2
คุณต้องใส่เครื่องหมายอัญประกาศเป็น$()อย่างอื่นมิฉะนั้นบรรทัดเอาต์พุต base64 จะถูกแบ่งออกเป็นหลายอาร์กิวเมนต์
meuh

ไฟล์ภาพหลายภาพและคำสั่งข้อมูล$ curl -d "name=Avatar&username=avatar&password=A1234567&email=avatar@user.com&token=16b185fe421d5017afb11691681906ed" --data-urlencode 'avatar='"$( base64 ~/Pictures/avatar004.jpg)"'' --data-urlencode 'image='"$( base64 ~/Pictures/avatar001.jpg)"'' --data-urlencode 'picture='"$( base64 ~/Pictures/577383.jpg)"'' http://localhost:8000/api/v1/users/register/
Moreno
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.