надіслати закодоване зображення 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.


Так, це набагато краще.
муру

Привіт, мій, мені не вдалося, коли я намагаюся запустити цей комбінований командний рядок із коду PHP, $ html = shell_exec ($ str); якщо я скопіюю код $ str і запускаю безпосередньо в командному рядку, це добре. Але shell_exec не працював, будь ласка, допоможіть :( велике спасибі.
Bảo Nam

Ха-ха, я створив файл bash, chmod + x цей файл, потім напишіть мою команду до файлу та запустіть shell_exec ('/ шлях до файлу sh / xxx.sh') ;, я працював як шарм. Дякую.
Bảo Nam

1
@ BảoNam Добре, гарне рішення. Я не дуже займаюся php, і не бачу очевидної причини, чому перша версія не працювала. Подивіться у файлі журналу помилок вашого сервера, щоб отримати підказки. Думаю, вам краще почати нове запитання, коли задіяний php.
meuh

5

Bash не розширюється в одиночні лапки. '{"image" : $( base64 ~/Pictures/1.jpg )}'надсилається як є. Замість цього спробуйте:

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

(Вийдіть із початкової цитати перед тим, як робити заміну команди, а потім відкрийте цитату ще раз.)


2
Вам потрібно подвоїти цитування, $()інакше вихідні рядки base64 будуть розділені на кілька аргументів curl.
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/
Морено
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.