Large file upload - salmanbaig8/imp GitHub Wiki
File convFile;
//Check For OS UNIX/Windows, to create diff TMP path
if (System.getProperty(OS_NAME).startsWith(WINDOWS)) {
convFile = new File(file.getOriginalFilename());
logger.info("OS is windows, getOriginalFilename: " + file.getOriginalFilename());
convFile.createNewFile();
} else {
String tempPath = Util.propertiesLoad().getProperty(SERVER_PATH);
convFile = new File(tempPath + file.getOriginalFilename());
logger.info("UNIX Based system, getOriginalFilename: " + file.getOriginalFilename());
convFile.createNewFile();
}
logger.debug("convFile: " + convFile);
if(file.getInputStream() instanceof ByteArrayInputStream)
{
logger.debug(apiName + " :File is not Channelled");
try(FileOutputStream fos = new FileOutputStream(convFile);) {
fos.write(file.getBytes());
logger.info("convert method End");
return convFile;
}
}
else
{ //Handling larger files for uploading to avoid JVM heap Space
logger.debug(apiName + " :File is Channelled");
try(FileOutputStream fos = new FileOutputStream(convFile);FileInputStream is =(FileInputStream) file.getInputStream();) {
FileChannel iStreamChannel = is.getChannel();
ByteBuffer bb = ByteBuffer.allocate(10000);
FileChannel outChannel=fos.getChannel();
while(iStreamChannel.read(bb) >= 0){
bb.flip();
outChannel.write(bb);
bb.clear();
}
outChannel.close();
logger.info(apiName + " :convert method End");
return convFile;
}
}