curl을 사용하여 base64로 인코딩 된 이미지 보내기


8

나는 사용하여 명령 줄에서 base64로 인코딩 된 이미지를 전송하려고 curl하고 base64다음과 같이 :

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

그러나 $예기치 않은 토큰 이라는 응답이 다시 나타납니다 . base64로 인코딩 된 이미지를 보내려면 어떻게합니까?

답변:


20

@muru는 정확하지만 baseson 데이터를 json 인코딩 으로 보내려고 하면 명령 줄에 비해 너무 커서 다음과 같은 것을 선호 할 수 있습니다.

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

-X POST의해 암시됩니다 -d.


예, 훨씬 낫습니다.
muru

안녕하세요 meuh, 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

배쉬는 작은 따옴표로 확장되지 않습니다. '{"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.