The approach I took I thought would be the best way to handle this, but I'm running into a snag which I'll explain in a minute.
I have a page with form elements whereby the user can upload a file. The user can also optionally associate this to-be-uploaded file with metadata. When the user chooses to associate the to-be-uploaded file with metadata, they are taken to another page to do so, all the while, I am doing this:
$_SESSION['uploadedFile'] = serialize($_FILES);
I am retaining the $_FILES collection because you are not yet submitting anything but you want to not have to have the user re-submit the file over and over ad infinitum. So on doing that, once they're done they hit the "Submit" button to do their duty.
I also have an Accepter class that will check all form data for validation. If $_FILES exists (the user submitted a file), it needs to check to see if the file data is correct. Everything works just fine... except for one problem:
is_uploaded_file($FILES[$section]['tmp_name']) is always false because while $FILES[$section]['tmp_name'] exists, it's obviously.. not uploaded, at least not immediately.
I re-retrieve and repopulated $_FILES as so:
if ($hasUploadedFileInAssoc && !$willDisassocNewAssocFile)
$_FILES = unserialize($_SESSION['uploadedFile']);
then you finally get to:
if (!is_uploaded_file($_FILES[$section]['tmp_name'])) $this->setErrorArray(array('action' => 'File was not uploaded'));
This line is constantly false even though I did upload the file.. just not immediately before I get to the page with this line; it was uploaded a while ago and all information saved in a $_SESSION variable to be retrieved later.
What I'm looking for is a "code review" or an "approach review" as to whether or not I handled this request properly inasmuch as storing $_FILES into a session variable and retrieving it later to allow the user to upload a file and submit data anytime they want to on it. This would help me moreso than a solution at this point to the is_uploaded_file() problem (though that's always welcomed too!)
Thanx
Phil