Ich habe eine Datei, die Base64-codierte Bilddaten enthält: ~/dog/1.jpg
Ich habe es per SSH dort abgelegt und die Daten Base64-kodiert, sodass die Übertragung im Terminal sicher ist. Gehen Sie davon aus, dass die Base64-Bilddaten nicht beschädigt sind.
Nachdem ich die Bilddaten an den anderen Server übergeben habe, muss ich den Dateiinhalt dekodieren und dann die kodierte Datei mit der dekodierten Datei überschreiben.
Und ich kann den Base64-Befehl nicht verwenden, da er auf dem Remote-Server nicht verfügbar ist.
Wie kann ich Dateiinhalte Base64-dekodieren und dann die kodierten Dateiinhalte mit den dekodierten Inhalten überschreiben, vorzugsweise mit Perl?
Das ist, was ich jetzt habe ...
# Decode image data
poo=$(cat ~/dog/1.jpg | perl -MMIME::Base64 -ne 'printf "%s\n",decode_base64($_)');
# Write decoded data to file
echo $poo >| ~/dog/1.jpg
Dadurch wird die Datei überschrieben, das Bild wird jedoch nicht richtig dekodiert.
Antwort1
perl -MMIME::Base64 -i -0777ne 'print decode_base64($_)' ~/dog/1.jpg
Vermeidet die Verwendung eines Vermittlers (sei es eine Variable oder eine temporäre Datei) und speichert die dekodierte Datei wieder in der ursprünglichen JPEG-Datei.