NullReferenceException is thrown when submitting a form with empty File Upload element


Description

In Sitecore Forms, submitting a form with an empty non-required File Upload field might fail with the following unhandled exception:

[NullReferenceException: Object reference not set to an instance of an object.]
   Sitecore.ExperienceForms.Mvc.Pipelines.ExecuteSubmit.StoreFiles.StoreUploadedFiles(List`1 files, String itemId) +313
   Sitecore.ExperienceForms.Mvc.Pipelines.ExecuteSubmit.StoreFiles.Process(ExecuteSubmitActionsEventArgs args) +568
   (Object , Object ) +53
   Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args) +489
   Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain, Boolean failIfNotExists) +235
   Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain) +21
   Sitecore.Mvc.Pipelines.PipelineService.RunPipeline(String pipelineName, TArgs args) +231
   Sitecore.Mvc.Pipelines.PipelineService.RunPipeline(String pipelineName, TArgs args, Func`2 resultGetter) +225
   Sitecore.ExperienceForms.Mvc.Processing.FormSubmitHandler.ExecuteSubmitActions(FormSubmitContext submitContext) +323
   Sitecore.ExperienceForms.Mvc.Processing.FormSubmitHandler.Submit(FormSubmitContext submitContext) +108
   Sitecore.ExperienceForms.Mvc.Controllers.BaseFormBuilderController.ProcessFormData(FormDataModel data) +1243
   Sitecore.ExperienceForms.Mvc.Controllers.FormBuilderController.Index(FormDataModel data) +129
   lambda_method(Closure , ControllerBase , Object[] ) +138

The issue occurs due to missing scripts that should be added by the @Html.RenderFormScripts() helper mentioned in the following document: https://doc.sitecore.com/xp/en/developers/93/sitecore-experience-manager/add-a-form-to-a-webpage.html

Solution

For all Sitecore versions, add the @Html.RenderFormScripts() helper to MVC layout as described in the Add the MVC layout section of the following document:
https://doc.sitecore.com/xp/en/developers/93/sitecore-experience-manager/add-a-form-to-a-webpage.html