Pertanyaan yang diajukan:
Saya sedang mengerjakan situs web kecil sebagai praktik, tetapi gambar front-end dienkripsi oleh Base64 dan diteruskan ke back-end untuk decoding. Tapi selalu ada masalah, tolong beri saya nasihat
public static string base64ToiMg (string src) melempar ioException {string uuid = uuid.randomuuid (). toString (); StringBuilder newPath = New StringBuilder (img_root_path); newPath.Append (pemisah). tambahkan (uuid). append (img_suffix); if (src == null) {return null; } byte [] data = null; Base64.decoder decoder = base64.getDecoder (); coba (outputStream out = FileOutputStream baru (newPath.toString ())) {data = decoder.decode (src); out.write (data); return newpath.tostring (); } catch (ioException e) {lempar ioException baru (); }}java.lang.illegalargumentException: Input byte array memiliki unit akhir yang salah 4-byte
Di atas adalah informasi pengecualian terkait. Saya mencoba menempelkan kode basis64 dari front-end ke notepad dan kemudian mencoba memecahkan kode sendiri, dan masalah yang sama juga benar.
Larutan:
IllegalargumentException: Pengecualian parameter ilegal,
Coba ini, seharusnya baik -baik saja.
Izinkan saya memberi tahu Anda prosesnya:
Punya Stackoverflow, Debug. Akhirnya, saya menemukan bahwa data itu nol. Ayo, kita perlu belajar banyak.
Lain kali saya menemukan debug masalah, lihat kode mana yang memiliki masalah. Dengan menjawab Anda, saya telah belajar banyak.
Poin kuncinya adalah di sini: lempar ioException baru ();
coba (outputStream out = FileOutputStream baru (newPath.toString ())) {out.write (data); } catch (ioException e) {e.printstacktrace (); Lempar RuntimeException baru ("Ini adalah pengecualian yang dilemparkan"); // Lempar RunimeException baru (E); } public static string base64ToiMg (string src) melempar ioException {string uuid = uuid.randomuuid (). toString (); StringBuilder newPath = StringBuilder baru ("xx"); newpath.append ("xx"). tambahkan (uuid). append ("xx"); if (src == null) {return null; } byte [] data = base64.getDecoder (). decode (src); coba (outputStream out = FileOutputStream baru (newPath.toString ())) {out.write (data); } catch (ioException e) {e.printstacktrace (); } return newpath.toString (); }Tambahkan sumber daya shutdown yang umum digunakan:
public static string base64ToiMg (string src) melempar ioException {string uuid = uuid.randomuuid (). toString (); StringBuilder newPath = StringBuilder baru ("xx"); newpath.append ("xx"). tambahkan (uuid). append ("xx"); if (src == null) {return null; } byte [] data = null; OutputStream out = null; Base64.decoder decoder = base64.getDecoder (); coba {out = new fileoutputStream (newPath.toString ()); data = decoder.decode (src); out.write (data); } catch (ioException e) {e.printstacktrace (); } akhirnya {if (out! = null) {out.close (); }} return newpath.toString (); }