When uploading a file as part of a form submission to a path/folder that must be dynamically created at submission time, a Craft API is incorrectly called, resulting in an error.
Steps to reproduce
Create a form with an upload control, using a local folder asset volume and /userUploads/{{ form.handle }}/{{ now|date("Y-m-d H:i:s") }}/ as the Upload Location Subfolder value
Submit to the form from the front end (I am using a custom template but pretty sure that doesn't make any difference - see below)
3. I get this error (click to expand):
```
Exception 'TypeError' with message 'craft\services\Assets::getFolderById(): Argument #1 ($folderId) must be of type int, craft\models\VolumeFolder given, called in /var/www/html/vendor/solspace/craft-freeform/packages/plugin/src/Services/FilesService.php on line 448'
in /var/www/html/vendor/craftcms/cms/src/services/Assets.php:401
Stack trace:
#0 /var/www/html/vendor/solspace/craft-freeform/packages/plugin/src/Services/FilesService.php(448): craft\services\Assets->getFolderById(Object(craft\models\VolumeFolder))
#1 /var/www/html/vendor/solspace/craft-freeform/packages/plugin/src/Services/FilesService.php(83): Solspace\Freeform\Services\FilesService->getFolder(1, 'userUploads/7aa...', Object(Solspace\Freeform\Form\Types\Regular))
#2 /var/www/html/vendor/solspace/craft-freeform/packages/plugin/src/Fields/FileUploadField.php(132): Solspace\Freeform\Services\FilesService->uploadFile(Object(Solspace\Freeform\Fields\FileUploadField), Object(Solspace\Freeform\Form\Types\Regular))
#3 /var/www/html/vendor/solspace/craft-freeform/packages/plugin/src/Library/Composer/Components/Form.php(1298): Solspace\Freeform\Fields\FileUploadField->uploadFile()
#4 /var/www/html/vendor/solspace/craft-freeform/packages/plugin/src/Library/Composer/Components/Form.php(767): Solspace\Freeform\Library\Composer\Components\Form->validate()
#5 /var/www/html/vendor/solspace/craft-freeform/packages/plugin/src/Controllers/SubmitController.php(52): Solspace\Freeform\Library\Composer\Components\Form->handleRequest(Object(craft\web\Request))
#6 [internal function]: Solspace\Freeform\Controllers\SubmitController->actionIndex()
#7 /var/www/html/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array)
#8 /var/www/html/vendor/yiisoft/yii2/base/Controller.php(178): yii\base\InlineAction->runWithParams(Array)
#9 /var/www/html/vendor/yiisoft/yii2/base/Module.php(552): yii\base\Controller->runAction('', Array)
#10 /var/www/html/vendor/craftcms/cms/src/web/Application.php(302): yii\base\Module->runAction('freeform/submit', Array)
#11 /var/www/html/vendor/craftcms/cms/src/web/Application.php(627): craft\web\Application->runAction('freeform/submit', Array)
#12 /var/www/html/vendor/craftcms/cms/src/web/Application.php(281): craft\web\Application->_processActionRequest(Object(craft\web\Request))
#13 /var/www/html/vendor/yiisoft/yii2/base/Application.php(384): craft\web\Application->handleRequest(Object(craft\web\Request))
#14 /var/www/html/web/index.php(12): yii\base\Application->run()
#15 {main}
Describe the bug or issue you're experiencing
When uploading a file as part of a form submission to a path/folder that must be dynamically created at submission time, a Craft API is incorrectly called, resulting in an error.
Steps to reproduce
/userUploads/{{ form.handle }}/{{ now|date("Y-m-d H:i:s") }}/
as theUpload Location Subfolder
value3. I get this error (click to expand):
``` ```Inspecting
FilesService.php#L445-L449
the fix looks super easyFreeform has:
As the error indicates
craft\services\Assets::ensureFolderByFullPathAndVolume()
returns aVolumeFolder
already, so there is no need to callcraft\services\Assets::getFolderById()
Looks like you just need:
Craft & Plugin Info (please complete the following information):