Encode to Base64 a specific file by Windows Command Line - Stack Overflow
Is it a good idea to convert images into base64 string and save them in database?
Encode to Base64?
Wrote a simple base64 encoder/decoder and thought I'd share it.
openssl can do this for you, and it's all installed with OS X by default; no need to install darwinports.
$ openssl base64 -in <infile> -out <outfile> # file
$ openssl base64 -in <infile> | tr -d '\n' | pbcopy # clipboard
Without the -in option reads from stdin
OpenSSL can be used more succinctly:
echo -n 'input' | openssl base64
echo -n -> must be used, or encoding will be done including new line character.
Or:
openssl base64 <ENTER> [type input] <CTRL+D>
the usual windows way to generate a base 64 string is
Make any file (here simple text but can be PDF, docX or whatever.)
echo Hello World!>input.ext
Convert to base64
certutil -encodehex -f "input.ext" "output.txt" 0x40000001 1>nul
to see the result use
type output.txt
SGVsbG8gV29ybGQhDQo=
To send to another command use a pipe to use the TYPE output.txt as input. However like many conversion tasks it needs to be a file IO. To avoid any hint of a hard drive file, it would need a memory file system.
For looping a folder use a for loop with variables to suit
to decode output.txt
certutil -decode -f output.txt output.ext 1>nul
type output.ext
Hello World!
Answer
There is a very small (7.5 kB) downloadable exe c 2015 that can be used to encode/decode to file or console. You can try to download direct in a curl command like this but it must be 7680 bytes.
>curl -O https://master.dl.sourceforge.net/project/base64/b64.exe?viasf=1
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 7680 100 7680 0 0 12070 0 --:--:-- --:--:-- --:--:-- 12132
>b64.exe
b64 (Base64 Encode/Decode) Bob Trower 2001/08/03
(C) Copr Bob Trower 1986-2015 Version 0.94R
Usage: b64 -option [-l<num>] [<FileIn> [<FileOut>]]
Purpose: This program is a simple utility that implements
Base64 Content-Transfer-Encoding (RFC1113).
Use -h option for additional help.
>
Thus use is very simple:
b64 -e input.ext
Result on screen or use in a pipe
SGVsbG8gV29ybGQhDQo=
Note that's exactly the same as above however there has been no update as to most recent query about why it may not always work inbound as expected, but this is an outbound usage.
example of open issue
echo Hello World!|b64 -e
not an accurate result compared to above but an acceptable troughput
SGVsbG8gV29ybGQhCg==
so when using
echo SGVsbG8gV29ybGQhCg==|b64 -d
It does correctly report
Hello World!
The reason for the difference is the last EOL
0000000C: 0A 0D
And depending on circumstances, may or may not be a material difference. Also note that command lines are limited in working length, so console usage is also limited for string handling too
I suggest to install OpenSSL on your Windows machine. After you set the PATH variable it's easy as:
type <file_name> | openssl base64
I'm creating a dotnet Web API and need to store images. I've been converting the images to base64 and saving them in the database as string.
Is this a good idea or am I doing something wrong?