कैसे lin64 बैश / शेल में बेस 64 एनकोड छवि


104

मैं एक बेस स्क्रिप्ट में बेस 64 एनकोड करने की कोशिश कर रहा हूं और इसे वेरिएबल में डाल रहा हूं:

test="$(printf DSC_0251.JPG | base64)"
echo $test
RFNDXzAyNTEuSlBH

मैंने भी कुछ इस तरह की कोशिश की है:

test=\`echo -ne DSC_0251.JPG | base64\`

लेकिन फिर भी कोई सफलता नहीं मिली।

मैं कुछ इस तरह करना चाहता हूं:

curl -v -X POST -d '{"image":$IMAGE_BASE64,"location":$LOCATION,"time_created":$TIMECREATED}' -H 'Content-type: text/plain; charset=UTF8' http://192.168.1.1/upload

मुझे यह http://www.zzzxo.com/q/answers-bash-base64-encode-script-not-encoding-right-12290484.html मिला

लेकिन फिर भी कोई सफलता नहीं मिली।

जवाबों:


154

आपको फ़ाइलनाम के बजाय 'DSC_0251.JPG' नामक फ़ाइल catकी सामग्री प्राप्त करने के लिए उपयोग करने की आवश्यकता है।

test="$(cat DSC_0251.JPG | base64)"

हालाँकि, base64फ़ाइल से ही पढ़ सकते हैं:

test=$( base64 DSC_0251.JPG )

बिल्ली के साथ यह काम करता है, बहुत धन्यवाद एक बहुत आदमी। मुझे पता है कि यह फ़ाइल से पढ़ सकता है, लेकिन अभी भी इसे चर में स्टोर करने की समस्या है इसलिए परीक्षण = "$ (बिल्ली DSC_0251.JPG | base64)" मेरे लिए काम करता है।
डैश ००

3
क्या समस्या है? ऊपर दिए गए दो आदेशों को समान परिणाम देना चाहिए, पहले बिल्ली के बेकार उपयोग के अलावा
Chepner

तुम सही हो। यह मुझे क्या करना चाहिए$RESPONSE="$(curl -v -X POST -d '{"image":`base64|$DIR$IMAGE`,"location":$LOCATION,"time_created":$TIMECREATED}' -H 'Content-type: text/plain; charset=UTF8' --max-time 180 -s $URL)";
डैश

19
cat vlc.jpg | base64 -w 0 - यदि कोई व्यक्ति कॉपी और पेस्ट करने के लिए स्ट्रिंग के रूप में आउटपुट चाहता है।

1
इसमें गलत क्या है base64 DSC_0251.JPG? वहाँ के माध्यम से चलाने के लिए कोई जरूरत नहीं है catफिल्टर जब कार्यक्रम तर्क के रूप में एक फ़ाइल (लेता है base64 [OPTIONS] [FILE])
एरिक

61

एकल पंक्ति परिणाम:

base64 -w 0 DSC_0251.JPG

के लिए HTML:

echo "data:image/jpeg;base64,$(base64 -w 0 DSC_0251.JPG)"

फ़ाइल के रूप में:

base64 -w 0 DSC_0251.JPG > DSC_0251.JPG.base64

चर में:

IMAGE_BASE64="$(base64 -w 0 DSC_0251.JPG)"

इसके लिए चर में HTML:

IMAGE_BASE64="data:image/jpeg;base64,$(base64 -w 0 DSC_0251.JPG)"

आपको वापस पढ़ने योग्य डेटा मिलता है:

base64 -d DSC_0251.base64 > DSC_0251.JPG 

देखें: http://www.greywyvern.com/code/php/binary2base64


-w 0यह पैरामीटर कई मामलों में बहुत महत्वपूर्ण है। पूर्व। अगर हम सीधे कमांड लाइन में चल रहे हैं। धन्यवाद!
जयेश धन्धा

4
OSX पर BTW मुझे मिल रहा है base64: invalid option -- w। जब इसे हटा दिया जाता है, तो मैं मिलता हूं Unable to open '0': No such file or directory। इसके बजाय इसे देखें ।
कोबल

38

इसके लिए एक Linux कमांड है: base64

base64 DSC_0251.JPG >DSC_0251.b64

चर उपयोग करने के लिए परिणाम असाइन करने के लिए

test=`base64 DSC_0251.JPG`

7
base64 -d DSC_0251.b64 > DSC_0251.JPGआप वापस पढ़ने योग्य डेटा प्राप्त कर सकते हैं।
अल्स्टन

इस उत्तर ने xml और csv फ़ाइलों के लिए भी काम किया।
लुकास एंड्रेड


1

इसे आधार बनाने के लिए और इसे अपने क्लिपबोर्ड में रखें:

file="test.docx"
base64 -w 0 $file  | xclip -selection clipboard

0

यदि आपको समाप्ति से इनपुट की आवश्यकता है, तो यह प्रयास करें

lc=`echo -n "xxx_${yyy}_iOS" |  base64`

-n विकल्प base64 कमांड में "\ n" वर्ण इनपुट नहीं करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.