I had a similar problem a while back and got a handle on the UploadedFile Object by doing this:
public void uploadFile(String serverid) {
try {
String clientid = (String)FacesContext.getCurrentInstance().getApplication().getVariableResolver().resolveVariable(FacesContext.getCurrentInstance(), "#{id:"+serverid+"}");
HttpServletRequest hsr = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest();
Map map = hsr.getParameterMap();
UploadedFile uf = ((UploadedFile)map.get(clientid));
File fi = uf.getServerFile();
// Do whatever you want with the file
}
catch (Exception e) {
System.out.println(e);
}
}