gửi hình ảnh được mã hóa base64 bằng cách sử dụng curl


8

Tôi đang cố gắng gửi một hình ảnh được mã hóa base64 từ dòng lệnh bằng cách sử dụng curlbase64như thế này:

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

Tuy nhiên, tôi nhận được phản hồi lại nói rằng đó $là một mã thông báo bất ngờ. Làm cách nào để gửi hình ảnh được mã hóa base64?

Câu trả lời:


20

@muru là chính xác, tuy nhiên nếu bạn đang cố gửi json mã hóa thì dữ liệu base64 của bạn có thể quá lớn đối với dòng lệnh và bạn có thể thích một cái gì đó như thế này:

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

Các -X POSTđược ngụ ý bởi -d.


Vâng, điều này tốt hơn nhiều.
muru

Xin chào meuh, tôi đã thất bại khi tôi cố chạy dòng lệnh kết hợp này từ mã PHP, $ html = shell_exec ($ str); nếu tôi sao chép mã $ str và chạy trực tiếp trong dòng lệnh thì không sao. Nhưng shell_exec không hoạt động, vui lòng giúp đỡ :( cảm ơn bạn rất nhiều.
Bảo Nam

Haha, tôi đã tạo tệp bash, chmod + x tệp đó, sau đó viết lệnh của tôi vào tệp và chạy shell_exec ('/ path đến sh file / xxx.sh');, Tôi làm việc như một lá bùa. Cảm ơn.
Bảo Nam

1
@ Bảo Nam Ok, giải pháp tốt. Tôi không biết nhiều về php và tôi không thấy bất kỳ lý do rõ ràng nào khiến phiên bản đầu tiên không hoạt động. Tìm trong tệp nhật ký lỗi của máy chủ của bạn để tìm manh mối. Bạn nghĩ sẽ tốt hơn nếu bắt đầu một câu hỏi mới khi php có liên quan, tôi nghĩ vậy.
meuh

5

Bash không mở rộng trong dấu ngoặc đơn. '{"image" : $( base64 ~/Pictures/1.jpg )}'được gửi như vốn có. Thay vào đó, hãy thử:

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

(Thoát trích dẫn mở trước khi thực hiện thay thế lệnh, sau đó mở lại báo giá.)


2
Bạn cần trích dẫn hai dòng $()khác, các dòng đầu ra base64 sẽ được chia thành nhiều đối số curl.
meuh 20/07/2015

Nhiều tập tin hình ảnh và lệnh dữ liệu$ 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.