I’m using the webform_multiple_file module to let users upload files in a webform. There is a second form component in that form. It’s a number. I want to change the upload directory, which is defined on webform admin and is ‘webform/uploads’ in my case. I want the uploaded files to be stored in subfolders named by the number in the second form field. So the upload directory should be s.th. like ‘webform/uloads/102’.
I first tried to accomplish it with hook_webform_submission_presave, but I only can change the file id.
Then I found hook_file_presave, which seems to be the perfect function to solve my problem, but now I’m stuck with the question, how to get the value from my form field into the presave function? The only parameter is $file.
Can someone help me on this? Submission- or file-presave? Is it possible to change the file- and upload-directory in hook_webform_submission_presave?
UPDATE:
I was able to get the form value with $GLOBALS in hook_file_presave.
$order_number = $GLOBALS['_POST']['submitted']['upload_formular']['upload_wrapper']['bestellnummer'];
Some string-functions on $file->uri do get the split point and first and second part of uri. Append first part with the value of ‘bestellnummer’ as the subdirectory. Next I create the subdirectory with
file_prepare_directory($newdir, FILE_CREATE_DIRECTORY);
Then I change $file->uri and $file->destination to new URI, and dpm($file) shows, that it’s changed. The new directory is created, but the file is still in the original folder after submitting the form.
It seems I’m missing something here…