Billede til Base64-strengkonvertering

1. Oversigt

I denne hurtige vejledning skal vi dække, hvordan man koder billedfiler til en Base64 Snor, derefter afkode det for at hente det originale billede ved hjælp af Apache Common IO og Java 8 native Base64-funktioner.

Denne handling kan anvendes til alle binære filer eller binære arrays. Det er nyttigt, når vi har brug for at overføre binært indhold i JSON-format, f.eks. Fra mobilapp til REST-slutpunkt.

For mere information om Base64-konvertering, se denne artikel her.

2. Maven-afhængighed

Lad os tilføje følgende afhængigheder til pom.xml fil:

 commons-io commons-io 2.6 

Du kan finde den nyeste version af Apache Commons IO på Maven Central.

3. Konverter billedfil til Base64 Snor

Lad os først og fremmest læse filindholdet i et byte-array og bruge Java 8 Base64 klasse for at kode det:

byte [] fileContent = FileUtils.readFileToByteArray (ny fil (filePath)); String encodedString = Base64.getEncoder (). EncodeToString (fileContent);

Det kodetString er en Snor af tegn i sæt af A-Za-z0-9 + /, og dekoderen afviser tegn uden for dette sæt.

4. Konverter Base64 Snor til billedfil

Nu har vi en Base64 Snor, lad os afkode det tilbage til binært indhold og skrive til en ny fil:

byte [] decodedBytes = Base64.getDecoder (). decode (encodedString); FileUtils.writeByteArrayToFile (ny fil (outputFileName), dekodetBytes);

5. Test af vores kode

Endelig kan vi kontrollere, at koden fungerer korrekt ved at læse en fil og kode den til en Base64 Snor, og afkodning tilbage til en ny fil:

offentlig klasse FileToBase64StringConversionUnitTest {private String inputFilePath = "test_image.jpg"; private String outputFilePath = "test_image_copy.jpg"; @Test offentlig ugyldig filToBase64StringConversion () kaster IOException {// indlæs fil fra / src / test / resources ClassLoader classLoader = getClass (). GetClassLoader (); File inputFile = ny fil (classLoader .getResource (inputFilePath) .getFile ()); byte [] fileContent = FileUtils.readFileToByteArray (inputFile); String encodedString = Base64 .getEncoder () .encodeToString (fileContent); // Opret outputfil File outputFile = ny fil (inputFile .getParentFile () .getAbsolutePath () + File.pathSeparator + outputFilePath); // afkode strengen og skriv til filbyte [] decodedBytes = Base64 .getDecoder () .decode (encodedString); FileUtils.writeByteArrayToFile (outputFile, decodedBytes); assertTrue (FileUtils.contentEquals (inputFile, outputFile)); }}

6. Konklusion

Denne aktuelle artikel forklarer det grundlæggende ved kodning af enhver fils indhold til en Base64 Snorog afkodning af en Base64 Snor til et byte-array og gem det i en fil ved hjælp af Apache Common IO- og Java 8-funktioner.

Som altid kan kodeuddrag findes på GitHub.