The quick solution will be to display existing file upload button and set the file to be uploaded.
Eg.
JavascriptExecutor executor = (JavascriptExecutor)driver;
WebElement element = driver.findElement(By.xpath("//input[@type=\"file\"]"));
executor.executeScript("arguments[0].style.display='block';", element);
Now, wait for the element to be clickable.
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.xpath("//input[@type=\"file\"]")));
Now, you can do sendKeys
elemenet.sendKeys("/path/to/the/file");
Hope that helps!