如何在linux bash / shell中对base64进行编码

时间:2013-06-04 13:03:22

标签: linux image shell variables base64

我正在尝试在shell脚本中对图像进行base64编码并将其放入变量:

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

但仍然没有成功。

6 个答案:

答案 0 :(得分:117)

您需要使用cat来获取名为“DSC_0251.JPG”的文件的内容,而不是文件名本身。

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

但是,base64可以从文件中读取:

test=$( base64 DSC_0251.JPG )

答案 1 :(得分:39)

单行结果:

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

答案 2 :(得分:33)

有一个Linux命令:base64

base64 DSC_0251.JPG >DSC_0251.b64

将结果分配给变量使用

test=`base64 DSC_0251.JPG`

答案 3 :(得分:3)

html的基础64:

file="DSC_0251.JPG"
type=$(identify -format "%m" "$file" | tr '[A-Z]' '[a-z]')
echo "data:image/$type;base64,$(base64 -w 0 "$file")"

答案 4 :(得分:0)

要对其进行base64并将其放入剪贴板中

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

答案 5 :(得分:0)

如果您需要来自终端的输入,请尝试

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

-n选项不会在base64命令中输入“ \ n”字符。