Fragen aufgeworfen:
Ich arbeite als Praxis an einer kleinen Website, aber das Front-End-Bild wird von Base64 verschlüsselt und zum Dekodieren an das Back-End übergeben. Aber es gab immer Probleme, bitte geben Sie mir Ratschläge
public static String base64toimg (String src) löst ioException {String uUid = UUID.RandomuUid (). toString () aus; StringBuilder newpath = new StringBuilder (img_root_path); NewPath.Append (Trennzeichen). anhängen (uUid). append (img_suffix); if (src == null) {return null; } byte [] data = null; Base64.Decoder decoder = Base64.getDeCoder (); try (outputStream out = new FileOutputStream (newpath.toString ())) {data = decoder.decode (SRC); out.write (Daten); return Newpath.ToString (); } catch (ioException e) {throw New ioException (); }}Java.lang.ILLEGALARGUMENTException: Eingabe-Byte-Array hat eine falsche 4-Byte-Endeinheit
Die oben genannten sind verwandte Ausnahmeinformationen. Ich versuche, den Basis64-Code des Front-Ends in Notepad einzufügen und dann selbst zu dekodieren, und das gleiche Problem ist ebenfalls wahr.
Lösung:
IllegalArgumentException: illegale Parameterausnahme,
Versuchen Sie dies, es sollte in Ordnung sein.
Lassen Sie mich Ihnen den Prozess sagen:
Habe Stackoverflow, Debugg. Schließlich stellte ich fest, dass Daten null sind. Komm schon, wir müssen viel lernen.
Wenn ich das nächste Mal auf ein Problem -Debug übernage, sehen Sie, welcher Code ein Problem hat. Indem ich Ihnen antwortete, habe ich viel gelernt.
Der entscheidende Punkt ist hier: neue IOException () werfen;
try (outputStream out = new FileOutputStream (newpath.toString ()) {out.write (Daten); } catch (ioException e) {e.printstacktrace (); Neue RunTimeException werfen ("Dies ist die Ausnahme"); // neue RunTimeException (e) werfen; } public static String base64toimg (String src) löst ioException {String uUid = UUID.RandomuUid (). toString () aus; StringBuilder newpath = new StringBuilder ("xx"); newpath.append ("xx"). anhängen (uUid). append ("xx"); if (src == null) {return null; } byte [] data = base64.getDeCoder (). Decode (SRC); try (outputStream out = new FileOutputStream (newpath.toString ()) {out.write (Daten); } catch (ioException e) {e.printstacktrace (); } return newpath.toString (); }Fügen Sie eine weitere häufig verwendete Abschaltressource hinzu:
public static String base64toimg (String src) löst ioException {String uUid = UUID.RandomuUid (). toString () aus; StringBuilder newpath = new StringBuilder ("xx"); newpath.append ("xx"). anhängen (uUid). append ("xx"); if (src == null) {return null; } byte [] data = null; OutputStream out = null; Base64.Decoder decoder = Base64.getDeCoder (); try {out = new FileOutputStream (newpath.toString ()); Data = decoder.decode (SRC); out.write (Daten); } catch (ioException e) {e.printstacktrace (); } endlich {if (out! = null) {out.close (); }} return Newpath.toString (); }