檔案上傳

在這個範例中,我們將展示如何建立一個檔案上傳表單,該表單將透過 ajax 提交,並附帶進度條。

我們將展示兩種不同的實現方式,一種使用純 JavaScript(使用 htmx 中的一些實用方法),另一種使用 hyperscript

首先是純 JavaScript 版本。

    <form id='form' hx-encoding='multipart/form-data' hx-post='/upload'>
        <input type='file' name='file'>
        <button>
            Upload
        </button>
        <progress id='progress' value='0' max='100'></progress>
    </form>
    <script>
        htmx.on('#form', 'htmx:xhr:progress', function(evt) {
          htmx.find('#progress').setAttribute('value', evt.detail.loaded/evt.detail.total * 100)
        });
    </script>

Hyperscript 版本非常相似,除了

    <form hx-encoding='multipart/form-data' hx-post='/upload'
          _='on htmx:xhr:progress(loaded, total) set #progress.value to (loaded/total)*100'>
        <input type='file' name='file'>
        <button>
            Upload
        </button>
        <progress id='progress' value='0' max='100'></progress>
    </form>

請注意,hyperscript 允許您將 details 中的屬性直接解構為變數