Perguntas levantadas:
Estou trabalhando em um pequeno site como prática, mas a imagem do front-end é criptografada pela Base64 e é passada para o back-end para decodificar. Mas sempre houve problemas, por favor me dê conselhos
public static string base64toimg (string src) lança ioexception {string uuid = uuid.randomuuid (). tostring (); StringBuilder newPath = new StringBuilder (img_root_path); newpath.append (separador). anexar (uuid). anexar (img_suffix); if (src == null) {return null; } byte [] data = null; Base64.decoder decodificador = base64.getDecoder (); tente (outputStream out = new FileOutputStream (newpath.toString ())) {data = decoder.Decode (src); out.write (dados); return newpath.toString (); } catch (ioexception e) {lança nova ioexception (); }}java.lang.illegalargumentException: a matriz de bytes de entrada tem uma unidade de final de 4 bytes errada
Os acima são informações de exceção relacionadas. Estou tentando colar o código base64 do front-end no bloco de notas e depois tentar decodificá-lo sozinho, e o mesmo problema também é verdadeiro.
Solução:
IlegalargumentException: exceção ilegal de parâmetros,
Experimente isso, deve estar ok.
Deixe -me dizer o processo:
Obtive Stackoverflow, Debug. Finalmente, achei que os dados são nulos. Vamos lá, precisamos aprender muito.
Da próxima vez que encontrar uma depuração de problemas, veja qual código tem um problema. Ao responder a você, eu aprendi muito.
O ponto principal é aqui: jogue nova ioexception ();
tente (outputStream out = new FileOutputStream (newpath.toString ())) {out.Write (Data); } catch (ioexception e) {e.printStackTrace (); lançar a nova RuntimeTexception ("Esta é a exceção lançada"); // lança a nova RuntimeException (e); } public static string base64toimg (string src) lança ioexception {string uuid = uuid.randomuuid (). tostring (); Stringbuilder newPath = new StringBuilder ("xx"); newpath.append ("xx"). anexar (uuid). anexar ("xx"); if (src == null) {return null; } byte [] data = base64.getDecoder (). decodge (src); tente (outputStream out = new FileOutputStream (newpath.toString ())) {out.Write (Data); } catch (ioexception e) {e.printStackTrace (); } return newpath.toString (); }Adicione outro recurso de desligamento comumente usado:
public static string base64toimg (string src) lança ioexception {string uuid = uuid.randomuuid (). tostring (); Stringbuilder newPath = new StringBuilder ("xx"); newpath.append ("xx"). anexar (uuid). anexar ("xx"); if (src == null) {return null; } byte [] data = null; OutputStream out = null; Base64.decoder decodificador = base64.getDecoder (); tente {out = new FileOutputStream (newpath.toString ()); dados = decodificador.decode (src); out.write (dados); } catch (ioexception e) {e.printStackTrace (); } finalmente {if (out! = null) {out.close (); }} return newpath.toString (); }