This FormTemplateProcessor is older and wasn't meant to work with file/image fields, because of "you need to save page before files.."
protected function ___savePage($form) {
if(!$this->contact->parent) return;
$this->contact->name = date('y-m-d-H-i-s-u');
if(in_array('title', $this->skipFields)) {
$this->contact->title = date($this->dateFormat);
}
if(ProcessWire::versionMajor == 2 && ProcessWire::versionMinor == 0) {
$this->contact->status = Page::statusHidden;
$this->contact->removeRole('guest');
} else {
// PW 2.1 and above
$this->contact->status = Page::statusUnpublished;
}
$this->contact->save();
}
You'd need to change how the script saves the page values to exclude file fields, save page and add files.
Apart from that I doubt the rendering of a file or even image field in the way this module is set does work, as when you render a form from a page's (input)fields will throw problems as file field in a context of a page isn't working as it needs a page that is existing and saved. It's designed for backend primarily.
// get the collection of inputs that can populate this page's fields
$inputfields = $this->contact->getInputfields();
// make all the fields required and add them to the form
foreach($inputfields as $inputfield) {
if(in_array($inputfield->name, $this->skipFields)) continue;
if(in_array($inputfield->name, $this->requiredFields)) $inputfield->required = true;
$form->add($inputfield);
}
It can get tricky to use this approach and need special workarounds to get this working. File fields need a page id to know where to store and upload the image. So after submitting and processing the form the page should already be created and the file will get uploaded no matter if the form was valid or not and so on.