Kép a Base64 karakterlánc átalakításra
1. Áttekintés
Ebben a gyors bemutatóban kitérünk arra, hogyan lehet kódolni a képfájlokat egy Base64-be Húr, majd dekódolja az eredeti kép letöltéséhez az Apache Common IO és a Java 8 natív Base64 szolgáltatásainak használatával.
Ez a művelet bármilyen bináris fájlhoz vagy bináris tömbhöz alkalmazható. Hasznos, ha bináris tartalmat kell átvinni JSON formátumban, például mobilalkalmazásból a REST végpontba.
Az Base64 átalakításról további információt itt talál.
2. Maven-függőség
Adjuk hozzá a következő függőségeket a pom.xml fájl:
commons-io commons-io 2.6
Az Apache Commons IO legújabb verzióját a Maven Centralon találja meg.
3. Konvertálja a képfájlt Base64-re Húr
Először olvassuk el a fájl tartalmát egy bájtos tömbbe, és használjuk a Java 8-at Base64 osztály kódolásához:
byte [] fileContent = FileUtils.readFileToByteArray (új fájl (filePath)); String encodedString = Base64.getEncoder (). EncodeToString (fileContent);
A encodedString egy Húr karakterkészlet a A-Za-z0-9 + /, és a dekóder elutasít minden olyan karaktert, amely ezen a készleten kívül van.
4. Konvertálja a Base64-et Húr képfájlba
Most van egy Base64 Húr, dekódoljuk vissza bináris tartalommá, és írjunk egy új fájlba:
byte [] decodedBytes = Base64.getDecoder (). dekódolás (encodedString); FileUtils.writeByteArrayToFile (új File (outputFileName), decodedBytes);
5. Kódunk tesztelése
Végül ellenőrizhetjük, hogy a kód megfelelően működik-e, ha elolvasunk egy fájlt, és egy Base64-be kódoljuk Húr, és dekódolja vissza egy új fájlba:
public class FileToBase64StringConversionUnitTest {private String inputFilePath = "test_image.jpg"; privát karakterlánc outputFilePath = "test_image_copy.jpg"; A @Test public void fileToBase64StringConversion () dobja az IOException {// fájlt a / src / test / resources fájlból ClassLoader classLoader = getClass (). GetClassLoader (); File inputFile = új fájl (classLoader .getResource (inputFilePath) .getFile ()); byte [] fileContent = FileUtils.readFileToByteArray (inputFile); String encodedString = Base64 .getEncoder () .encodeToString (fileContent); // kimeneti fájl létrehozása Fájl outputFile = új fájl (inputFile .getParentFile () .getAbsolutePath () + File.pathSeparator + outputFilePath); // dekódolja a karakterláncot, és írjon fájlba byte [] decodedBytes = Base64 .getDecoder () .decode (encodedString); FileUtils.writeByteArrayToFile (outputFile, decodedBytes); assertTrue (FileUtils.contentEquals (inputFile, outputFile)); }}
6. Következtetés
Ez a pontról szóló cikk elmagyarázza a fájl tartalmának az Base64-be történő kódolásának alapjait Húr, és egy Base64 dekódolását Húr bájt tömbbe, és mentse fájlba az Apache Common IO és a Java 8 funkcióinak használatával.
Mint mindig, a kódrészletek is megtalálhatók a GitHubon.