File Uploader Component
Overview
UI File Uploader component is an adapter for jQuery-File-Upload plugin used in Magento. Component is used to integrate file upload functionality with UI components.
Component elements
- Constructor:
<Magento_Ui_module_dir>/view/base/web/js/form/element/file-uploader.js
- JQuery file upload plugin:
jquery/fileUploader/jquery.fileupload-fp
- Default template:
<Magento_Ui_module_dir>/view/base/web/templates/form/element/uploader/uploader.html
- Preview template:
<Magento_Ui_module_dir>/view/base/web/templates/form/element/uploader/preview.html
Component options
Title | Description | Required For Correct Work | Type | Default Value |
---|---|---|---|---|
previewTmpl | Path to the files' preview template | No | String | Magento_Ui_module_dir/view/base/web/templates/form/element/uploader/preview.html |
maxFileSize | Defines maximum size of a file (in bytes | No | Number | Infinite |
isMultipleFiles | Flag which indicates whether multiple files can be uploaded or not | No | Boolean | false |
allowedExtensions | List of allowed file extensions | No | String/Array | * |
dropZone | CSS selector of a drop zone element relative to a file input element | No | String | [data-role=drop-zone] |
uploaderConfig | Configuration which will be passed to jquery-file-upload plugin | Yes | Object | |
uploaderConfig.url | Route to server controller which will handle file uploading process | Yes | String | null |
Integration
Here is an example of how File Uploader component integrates with Form component:
<form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
...
<fieldset name="foo">
...
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="label" xsi:type="string"/>
</item>
</argument>
<field name="bar">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="label" xsi:type="string">Sound Check</item>
<item name="visible" xsi:type="boolean">true</item>
<item name="formElement" xsi:type="string">fileUploader</item>
<item name="uploaderConfig" xsi:type="array">
<item name="url" xsi:type="url" path="path/to/controller"/>
</item>
</item>
</argument>
</field>
</fieldset>
</form>