Form elements - File upload

File upload helps users to select and upload a file.

Open this default file upload example in new window
Copy default file upload code
<div class="hse-form-group">
  <label class="hse-label" for="file-upload-1">
    Upload a file
  </label>
  <input class="hse-file-upload" id="file-upload-1" name="file-upload-1" type="file">
</div>
Close default file upload code
Nunjucks macro options

Use options to customise the appearance, content and behaviour of a component when using a macro, for example, changing the text.

Some options are required for the macro to work; these are marked as "Required" in the option description.

If you're using Nunjucks macros in production with "html" options, or ones ending with "html", you must sanitise the HTML to protect against cross-site scripting exploits.

Nunjucks arguments for default file upload
Name Type Required Description
Name describedBy Type string Required false Description One or more element IDs to add to the `aria-describedby` attribute, used to provide additional descriptive information for screenreader users.
Name id Type string Required false Description This is used for the main component and to compose id attribute for each item.
Name name Type string Required true Description Item-specific name attribute.
Name classes Type string Required false Description Classes to add to the details element.
Name errorMessage Type object Required false Description Options for the error message component.
Copy default file upload code
{% from 'file-upload/macro.njk' import fileUpload %}

{{ fileUpload({
        "id": "file-upload-1",
        "name": "file-upload-1",
        "label": {
              "text": "Upload a file"
            }
}) }}
Close default file upload code

When to use file upload

You should only ask users to upload something if it’s critical to the delivery of your service.

Updated: September 2023