invia l'immagine con codifica base64 usando l'arricciatura


8

Sto cercando di inviare un'immagine codificata base64 dalla riga di comando utilizzando curle in base64questo modo:

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

Tuttavia, ricevo una risposta dicendo che $è un token inaspettato. Come posso inviare l'immagine codificata in base64?

Risposte:


20

@muru è corretto, tuttavia se stai cercando di inviare un codice json che codifica i tuoi dati base64 potrebbe essere troppo grande per la riga di comando e potresti preferire qualcosa del genere:

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

Il -X POSTè implicita -d.


Sì, molto meglio.
Muru,

Ciao, ho fallito quando provo a eseguire questa riga di comando combinata dal codice PHP, $ html = shell_exec ($ str); se copio $ str code ed eseguo direttamente nella riga di comando, va bene. Ma shell_exec non ha funzionato, per favore aiutatemi :( grazie mille.
Nam Nam

Haha, ho creato il file bash, chmod + x quel file, quindi ho scritto il mio comando su file ed ho eseguito shell_exec ('/ percorso di sh file / xxx.sh') ;, ho lavorato come un incantesimo. Grazie.
Bảo Nam

1
@ BảoNam Ok, buona soluzione. Non ho molto a che fare con php e non vedo alcun motivo ovvio per cui la prima versione non abbia funzionato. Cerca gli indizi nel file di log degli errori del tuo server. Sarebbe meglio iniziare una nuova domanda quando php è coinvolto, credo.
Meuh

5

Bash non si espande tra virgolette singole. '{"image" : $( base64 ~/Pictures/1.jpg )}'viene inviato così com'è. Invece, prova:

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

(Esci dalla citazione di apertura prima di effettuare la sostituzione del comando, quindi apri di nuovo una citazione.)


2
È necessario citare tra virgolette $()altrimenti le linee di output di base64 verranno suddivise in diversi argomenti di arricciatura.
Meuh

File di immagini multiple e comando dati$ 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.