Uploading files is easy. Files to be uploaded can be either placed in a hard-coded location (bad) or stored on the classpath (better). Here is a simple example:
public class NewCompanyPage extends PageObject {
...
@FindBy(id="object_logo")
WebElement logoField;
public NewCompanyPage(WebDriver driver) {
super(driver);
}
public void loadLogoFrom(String filename) {
upload(filename).to(logoField);
}
}