Ответ 1
Вам нужно использовать cat
, чтобы получить содержимое файла с именем "DSC_0251.JPG", а не самим именем файла.
test="$(cat DSC_0251.JPG | base64)"
Однако base64
может читать из самого файла:
test=$( base64 DSC_0251.JPG )
Я пытаюсь base64 кодировать изображение в оболочке script и помещать его в переменную:
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
но все же не имели успеха.
Вам нужно использовать cat
, чтобы получить содержимое файла с именем "DSC_0251.JPG", а не самим именем файла.
test="$(cat DSC_0251.JPG | base64)"
Однако base64
может читать из самого файла:
test=$( base64 DSC_0251.JPG )
Результат в одной строке:
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
Для этого есть команда Linux: base64
base64 DSC_0251.JPG >DSC_0251.b64
Чтобы назначить результат переменной, используйте
test=`base64 DSC_0251.JPG`
База 64 для html:
file="DSC_0251.JPG"
type=$(identify -format "%m" "$file" | tr '[A-Z]' '[a-z]')
echo "data:image/$type;base64,$(base64 -w 0 "$file")"
Для base64 это и положить его в буфер обмена:
file="test.docx"
base64 -w 0 $file | xclip -selection clipboard
Если вам нужен вклад от терминологии, попробуйте это
lc='echo -n "xxx_${yyy}_iOS" | base64'
Опция-n
не будет вводить символ "\n" в команду base64.