ทำไมมีปัญหา:ตามที่มีคนระบุไว้แล้ว:
ถ้าคุณเริ่มต้นด้วยไบต์ [] และในความเป็นจริงมันไม่ได้มีข้อมูลข้อความไม่มี "การแปลงที่เหมาะสม" สตริงมีไว้สำหรับข้อความไบต์ [] ใช้สำหรับข้อมูลไบนารีและสิ่งเดียวที่สมเหตุสมผลจริงๆที่ต้องทำคือหลีกเลี่ยงการแปลงระหว่างพวกเขาเว้นแต่คุณจะต้องทำอย่างแน่นอน
ฉันกำลังสังเกตปัญหานี้เมื่อฉันพยายามสร้าง byte [] จากไฟล์ pdf แล้วแปลงเป็น String จากนั้นให้ String เป็นอินพุตและแปลงกลับเป็นไฟล์
ดังนั้นตรวจสอบให้แน่ใจว่าตรรกะการเข้ารหัสและถอดรหัสของคุณเหมือนกับที่ฉันทำ ฉันเข้ารหัสไบต์ [] ไปที่ Base64 อย่างชัดเจนและถอดรหัสเพื่อสร้างไฟล์อีกครั้ง
กรณีการใช้งาน:
เนื่องจากข้อ จำกัด บางอย่างที่ฉันได้พยายามที่จะที่ส่งbyte[]ในrequest(POST)และกระบวนการที่เป็นดังนี้:
ไฟล์ PDF >> Base64.encodeBase64 (ไบต์ []) >> สตริง >> ส่งคำขอ (POST) >> รับสตริง >> Base64.decodeBase64 (ไบต์ []) >> สร้างไบนารี
ลองใช้วิธีนี้และใช้งานได้กับฉัน ..
File file = new File("filePath");
byte[] byteArray = new byte[(int) file.length()];
try {
FileInputStream fileInputStream = new FileInputStream(file);
fileInputStream.read(byteArray);
String byteArrayStr= new String(Base64.encodeBase64(byteArray));
FileOutputStream fos = new FileOutputStream("newFilePath");
fos.write(Base64.decodeBase64(byteArrayStr.getBytes()));
fos.close();
}
catch (FileNotFoundException e) {
System.out.println("File Not Found.");
e.printStackTrace();
}
catch (IOException e1) {
System.out.println("Error Reading The File.");
e1.printStackTrace();
}
byte[]ข้อมูลไบนารีและStringข้อความของคุณ