1 year ago
#271996
Pankaj Kumar
Converting InputStream to byteArray[] and assigning it to a variable makes the byteArray[] empty
I have a standalone Spring BOOT Project which receives uploaded file as an byteArray[] and I perform validations on this byteArray[] by converting it back to InputStream and parsing through Apache Tika & removing MetaData.
//Controller.java
byte[] byteArray = payload.getByteArray();
InputStream inputStream = FileUploadValidation.byteArrayToInputStream(byteArray);
InputStream finalStream = FileUploadValidation.checkIfDocumentIsValid(inputStream);
byte[] finalByteArray = StreamUtils.copyToByteArray(finalStream); // This always comes empty
return finalByteArray;
//Method in Utility Class (FileUploadValidation.java) to perform operation on InputStream
public static InputStream checkIfDocumentIsValid(InputStream stream){
BodyContentHandler handler = new BodyContentHandler();
Metadata metadata = new Metadata();
ParseContext pcontext = new ParseContext();
RarParser parser = new RarParser();
parser.parse(stream, handler, metadata, pcontext);//This method simply parses the stream to Apache Tika PdfParser to check if it is a valid PDF and doesn't return anything.
stripMetaData(metadata); //Removes metaData from the stream
return stream;
}
I need to return the byteArray[] to another Spring Project I can see that the finalStream in Controller.java indeed is not empty but the finalByteArray is always empty. What am I doing wrong ? Is it the right way to do it ? Max File limit for uploading is set at 15MB.
java
arrays
inputstream
fileinputstream
datainputstream
0 Answers
Your Answer