+++ title = "File Upload" template = "demo.html" +++ In this example we show how to create a file upload form that will be submitted via ajax, along with a progress bar. We will show two different implementation, one in pure javascript (using some utility methods in htmx) and one in [hyperscript](https://hyperscript.org) First the pure javascript version. * We have a form of type `multipart/form-data` so that the file will be properly encoded * We post the form to `/upload` * We have a `progress` element * We listen for the `htmx:xhr:progress` event and update the `value` attribute of the progress bar based on the `loaded` and `total` properties in the event detail. ```html
``` The Hyperscript version is very similar, except: * The script is embedded directly on the form element * Hyperscript offers nicer syntax (although the htmx API is pretty nice too!) ```html
``` Note that hyperscript allows you to destructure properties from `details` directly into variables