mengirim gambar yang disandikan base64 menggunakan curl


8

Saya mencoba mengirim gambar yang disandikan base64 dari baris perintah menggunakan curldan base64seperti ini:

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

Namun, saya mendapat respons kembali dengan mengatakan bahwa itu $adalah token yang tidak terduga. Bagaimana cara mengirim gambar yang disandikan base64?

Jawaban:


20

@uru benar, namun jika Anda mencoba mengirim json yang menyandikan data base64 Anda mungkin terlalu besar untuk baris perintah dan Anda mungkin lebih suka sesuatu seperti ini:

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

The -X POSTtersirat oleh -d.


Ya, ini jauh lebih baik.
muru

Halo, saya gagal ketika saya mencoba menjalankan baris perintah gabungan ini dari kode PHP, $ html = shell_exec ($ str); jika saya menyalin kode $ str dan langsung menjalankannya di baris perintah, tidak apa-apa. Tapi shell_exec tidak berfungsi, tolong bantu :( terima kasih banyak.
Namo Nam

Haha, saya membuat file bash, chmod + x file itu, kemudian menulis perintah saya untuk file dan menjalankan shell_exec ('/ path to sh file / xxx.sh') ;, saya bekerja seperti pesona. Terima kasih.
Namo Nam

1
@ BảoNam Ok, solusi bagus. Saya tidak banyak tahu tentang php, dan saya tidak melihat alasan yang jelas mengapa versi pertama tidak berfungsi. Lihat di file log kesalahan server Anda untuk mendapatkan petunjuk. Anda akan lebih baik memulai pertanyaan baru ketika php terlibat, saya pikir.
meuh

5

Bash tidak berkembang dalam tanda kutip tunggal. '{"image" : $( base64 ~/Pictures/1.jpg )}'dikirim apa adanya. Sebagai gantinya, cobalah:

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

(Keluar dari kutipan pembuka sebelum melakukan pergantian perintah lalu buka kutipan lagi.)


2
Anda perlu memberi tanda kutip dua kali $()jika tidak, garis output base64 akan dibagi menjadi beberapa argumen curl.
meuh

Banyak file gambar dan perintah data$ 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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.