I am using Java 11. I am reading emails and retrieving their attachments using javax.mail and would like to save the attachments byte array.
So I need to convert a javax.mail.internet.MimeBodyPart (the attachment) to a byte[].
code so far:
private void savePDF(MimeBodyPart attachment, String invoiceNumber) {
byte[] data = attachment.get....
}
More info:
When I try open the PDF, I do the following:
InputStream is = response.getStream();
byte[] bytes = IOUtils.toByteArray(is);
OutputStream output = response.getOutputStream();
fos = new BufferedOutputStream(output);
fos.write(bytes);
This works perfectly when I get the bytes from a 'MultipartFile':
byte[] bytes = multipartFile.getBytes();
However, if I try use the byes from a MimeBodyPart (email attachment), it fails:
byte[] data = attachment.getInputStream().readAllBytes();
More info:
I have also tried, but I get the same error:
BASE64DecoderStream content = (BASE64DecoderStream) attachment.getContent();
byte[] bytes = content.readAllBytes();
bytes = Base64.decodeBase64(bytes);
Related
my java zip problem apeears only in websphere in linux environment,
but works on my local windows developer computer in tomee all right.
I try to compress a content and send the result as mail and backup the same content in a folder.
My input data is a CSV file content in a byte-array.
I compress the input byte array to a zip result byte array.
I try to save my zipped result data in a folder and send the same content as a mail attachment.
Result: zip-attachment in mail is delivered correctly but the same zip byte array saved as a file is corrupted.
public static byte[] zipContent(String filename, byte[] content) throws IOException {
final CRC32 crc = new CRC32();
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
try (final ZipOutputStream zipOut = new ZipOutputStream(baos);
final InputStream fis = new ByteArrayInputStream(content);) {
crc.reset();
final ZipEntry zipEntry = new ZipEntry(filename);
zipOut.putNextEntry(zipEntry);
int length;
byte[] bytes = new byte[1024];
while ((length = fis.read(bytes)) >= 0) {
crc.update(bytes,0,length);
zipOut.write(bytes, 0, length);
}
final long crcValue = crc.getValue();
zipEntry.setCrc(crcValue);
zipEntry.setSize(content.length);
zipEntry.setComment("CRC_" + Long.toString(crcValue));
zipOut.closeEntry();
zipOut.flush();
} finally {
baos.flush();
baos.close();
}
return baos.toByteArray();
}
I call
final byte[] csvContentArray = ... // Get CSV input anyway ...
File csvFile = new File(aCsvPathString);
Files.write(csvfile.toPath(), csvContentArray); // OKAY, saved correctly pre compress in server
//COMPRESS: byte[] --> byte[]
final byte[] zippedContent = zipContent(csvFileName, csvContentArray);
File zipFile = new File(aZipPathString);
Files.write(zipfile.toPath(), zippedContent); // CORRUPTED, saved after compress in server !!!
...
sendMail(emailAdress, zippedContent); // the same zipped content in mail is delivered correctly and can be opened without warnings !
What differs for zip file content as byte[] between saving in file system and sending as mail attachment (MimeBodyPart).
It is very strange for me, because it works fine in Windows/Tomee but not in Linux/Websphere.
My zipped csv file is huge and after compressing, first about 1000 lines are fine. Rest of file is confused.
I tried to code with and without CRC by ZipEntry, but it doesn't matter.
Opening corrupted zip in 7zip gives warnings like:
Unerwartetes Datenende. Translated: unexpected data end.
Es gibt noch Daten hinter den Hauptdaten. Translated: existing data after main data.
I'm always grateful for opinions and suggestions.
I am getting a JSON response from webservice call as
]1
I have to save this file to my system. I am using the following code:
BASE64Decoder decoder = new BASE64Decoder();
byte[] decodedBytes = decoder.decodeBuffer(response);
ByteArrayInputStream bis = new ByteArrayInputStream(decodedBytes);
bis.close();
File file = new File("C:/image one.jpeg");
FileOutputStream fop = new FileOutputStream(file);
fop.write(decodedBytes);
fop.flush();
fop.close();
The file gets saved but is corrupt and can't be opened. Can anybody shed some light on what I am doing wrong?
Try to use Base64 class from java.util.Base64
byte[] decodedBytes = Base64.getDecoder().decode(base64String);
Or Base64 from org.apache.commons.codec.binary
byte[] decodedBytes = Base64.decodeBase64(base64String);
And you won't need ByteArrayInputStream object
See this link for more detailed answer
I have a project in an android platform that the process should force me to convert image into bit-plane, but I don't know how is the code.
The images are from gallery and taken from camera.
Please help.
try this:
String encoded = Base64.encodeFromFile("data/inputImage.png");
//Convert String data to binary image file
Base64.decodeToFile(encoded, "data/outputImage.png");
//Convert binary image file to byte array to base64 encoded string
FileInputStream mFileInputStream = new FileInputStream("data/inputImage.png");
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] b = new byte[1024];
int bytesRead = 0;
while ((bytesRead = mFileInputStream.read(b)) != -1) {
bos.write(b, 0, bytesRead);
}
byte[] ba = bos.toByteArray();
encoded = Base64.encodeBytes(ba);
//Convert String data to binary image file
Base64.decodeToFile(encoded, "data/outputImage.png");
//Convert binary image file to base64 encoded String data file
Base64.encodeFileToFile("data/inputImage.png","data/encodedImage.txt");
//Convert base64 encoded String data file to binary image file
Base64.decodeFileToFile("data/encodedImage.txt","data/outputImage.png");
Source http://www.mysamplecode.com/2011/07/convert-image-to-string-and-string-to.html
I'm getting a response XML from web service and one of the field contains a string that should be convertable to pdf file.
This is example string that I extract from xml response:
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WzAgMCA4NDEuODkgNTk1LjI4XT4+CmVuZG9iagozIDAgb2JqCjw8L0lUWFQoMi4xLjcpL1R5cGUvUGFnZXMvQ291bnQgMi9LaWRzWzEgMCBSIDIgMCBSXT4+CmVuZG9iagoxMiAwIG9iago8PC9UeXBlL0NhdGFsb2cvUGFnZXMgMyAwIFI+PgplbmRvYmoKMTMgMCBvYmoKPDwvUHJvZHVjZXIoaVRleHQgMi4xLjcgYnkgMVQzWFQpL01vZERhdGUoRDoyMDE1MDMwOTEwMzcwOSswMScwMCcpL0NyZWF0aW9uRGF0ZShEOjIwMTUwMzA5MTAzNzA5KzAxJzAwJyk+PgplbmRvYmoKeHJlZgowIDE0CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDAwNDU5OSAwMDAwMCBuIAowMDAwMDA3OTY3IDAwMDAwIG4gCjAwMDAwMDgxMjkgMDAwMDAgbiAKMDAwMDAwNDQ4MiAwMDAwMCBuIAowMDAwMDAwMDE1IDAwMDAwIG4gCjAwMDAwMDQzMDEgMDAwMDAgbiAKMDAwMDAwNDM5NCAwMDAwMCBuIAowMDAwMDA3ODUwIDAwMDAwIG4gCjAwMDAwMDQ3NjEgMDAwMDAgbiAKMDAwMDAwNzY2NyAwMDAwMCBuIAowMDAwMDA3NzYxIDAwMDAwIG4gCjAwMDAwMDgxOTggMDAwMDAgbiAKMDAwMDAwODI0NCAwMDAwMCBuIAp0cmFpbGVyCjw8L1Jvb3QgMTIgMCBSL0lEIFs8NGYyYjMyZmU2NjQ4MzBlZjYxODliMzJhMjNiY2E1MTg+PDIwZGUyZmJkMjc1NzVhMzMyNmNkYTQ0OGNmYmE0OTMyPl0vSW5mbyAxMyAwIFIvU2l6ZSAxND4+CnN0YXJ0eHJlZgo4MzY3CiUlRU9GCg==
now I'm trying to convert it into proper pdf file like this:
byte[] bytes = THAT_LONG_STRING.getBytes();
BufferedOutputStream bos = null;
FileOutputStream fos = new FileOutputStream(new File("a.pdf");
bos = new BufferedOutputStream(fos);
bos.write(bytes);
bos.flush();
bos.close();
Sadly this does not work for me, output file is just file with that long string, pdf viewers cannot open it.
Any advices are welcome :)
Your string is in Base64 format. You should decode it to a byte array first, then write it to a file.
Just replace this line:
byte[] bytes = THAT_LONG_STRING.getBytes();
With this one (Apache Commons Codec required):
byte[] bytes = Base64.decodeBase64(THAT_LONG_STRING);
I'm trying to send a zip file using ksoap2 as client... File is arriving but corrupted, I think is something in my code when I encode it in Base64 (I'm using commons code)...
WS
FileInputStream fis = new FileInputStream(path.toString()+zipName.toString());
byte[] toByteArray = IOUtils.toByteArray(fis);
byte[] encodeBase64 = Base64.encodeBase64(toByteArray);
return encodeBase64;
Client
SoapPrimitive soapPrimitive = (SoapPrimitive) soapSerializationEnvelope.getResponse();
String result = soapPrimitive.toString();
byte[] decode = Base64.decode(result);
String formPath = "C:\\Users\\John\\Desktop\\test.zip";
boolean flag = new File(path.toString()).mkdirs();
FileOutputStream fileOutputStream = new FileOutputStream(formPath);
fileOutputStream.write(decode);
fileOutputStream.flush();
fileOutputStream.close();
The file is ok in the server, I can open it but when arrives in the client it's corrupted
thanks...