186 lines
4.7 KiB
Markdown
186 lines
4.7 KiB
Markdown
|
|
# AJAX simple file upload
|
||
|
|
|
||
|
|
Upload multiple files with progress. Has hooks for pre/post work
|
||
|
|
|
||
|
|
## How to use
|
||
|
|
|
||
|
|
include `ajaxFileUploadSimeple.js`
|
||
|
|
|
||
|
|
## How to run
|
||
|
|
|
||
|
|
init with `initAjaxUploader(ConfigObject)`
|
||
|
|
|
||
|
|
Where the config object can have the following settings
|
||
|
|
|
||
|
|
## Config Object settiings
|
||
|
|
|
||
|
|
### {String} target_file
|
||
|
|
|
||
|
|
Must be set
|
||
|
|
prefix for the element for the file upload
|
||
|
|
|
||
|
|
### {String} target_form
|
||
|
|
|
||
|
|
Must be set
|
||
|
|
the master form in which this element sits
|
||
|
|
|
||
|
|
### {Number} [max_files=1]
|
||
|
|
|
||
|
|
maximum uploadable files, if 1, multiple will be removed from input file field, if 0, no limit
|
||
|
|
|
||
|
|
### {Number} [max_file_size=0]
|
||
|
|
|
||
|
|
In bytes, maximum file size. If not set unlimited. 0 is also unlimited
|
||
|
|
|
||
|
|
### {Array} [allowed_extensions=[]]
|
||
|
|
|
||
|
|
Allowed file extensions. Without leading '.'. Will be added to the input file accept list
|
||
|
|
|
||
|
|
### {Array} [allowed_file_types=[]]
|
||
|
|
|
||
|
|
Allowed file types in mime format. Will be added to the input file accept list
|
||
|
|
|
||
|
|
### {String} [target_router='']
|
||
|
|
|
||
|
|
value of the action _POST variable, if not set or if empty use "fileUpload"
|
||
|
|
|
||
|
|
### {String} [target_action='']
|
||
|
|
|
||
|
|
override the target_form action field
|
||
|
|
|
||
|
|
### {Object} [form_parameters={}]
|
||
|
|
|
||
|
|
Key/Value list for additional parameters to add to the form submit. Added BEFORE fileBeforeUpload parameters
|
||
|
|
|
||
|
|
### {Object} [translation={}]
|
||
|
|
|
||
|
|
Translated strings pushed into the AFUS_strings object
|
||
|
|
|
||
|
|
### {Boolean} [auto_submit=false]
|
||
|
|
|
||
|
|
if we override the submit button and directly upload
|
||
|
|
|
||
|
|
### {Function} [fileChange='']
|
||
|
|
|
||
|
|
Function run on change of -file element entry. Parameters are target_file, file_pos, target_router
|
||
|
|
|
||
|
|
### {Function} [fileChangeAll='']
|
||
|
|
|
||
|
|
Function run on change of -file element entry after all file changes for each entry are run. Parameters are target_file, target_router
|
||
|
|
|
||
|
|
### {Function} [fileRemove='']
|
||
|
|
|
||
|
|
Called when an upload file is removed from the queue before upload. Parameters are target_file, file_pos
|
||
|
|
|
||
|
|
### {Functuon} [fileClear='']
|
||
|
|
|
||
|
|
called when clear button is pressed. Parameters are target_file
|
||
|
|
|
||
|
|
### {Function} [fileBeforeUploadAll='']
|
||
|
|
|
||
|
|
Function called before uploads start. Parameters are target_file, target_router
|
||
|
|
|
||
|
|
### {Function} [fileBeforeUpload='']
|
||
|
|
|
||
|
|
Function called before upload starts. Parameters are target_file, file_pos, target_router
|
||
|
|
|
||
|
|
### {Function} [fileUploaded='']
|
||
|
|
|
||
|
|
Function called after upload has successfully finished. Parameters are target_file, file_pos, target_router, data (object returned from upload function call)
|
||
|
|
|
||
|
|
### {Function} [fileUploadedAll='']
|
||
|
|
|
||
|
|
After all uploads have been done, this one will be called. Parameters are target_file, target_router
|
||
|
|
|
||
|
|
### {Function} [fileUploadError='']
|
||
|
|
|
||
|
|
Function called after upload has failed. Parameters are target_file, file_pos, target_router, data (object returned from upload function call)
|
||
|
|
|
||
|
|
## Method call flow
|
||
|
|
|
||
|
|
```txt
|
||
|
|
[**1**] initAjaxUploader
|
||
|
|
[1 run 2] check if browser is capable for uploader
|
||
|
|
[1 run 1-A] run config check
|
||
|
|
[1 listen 8-C] cancel upload output
|
||
|
|
[1 run 3] afusPassThroughEvent
|
||
|
|
[1 run 4] run main file uploader function attachment
|
||
|
|
```
|
||
|
|
|
||
|
|
```txt
|
||
|
|
[1-A] afusUploaderConfigCheck check and clean config
|
||
|
|
```
|
||
|
|
|
||
|
|
```txt
|
||
|
|
[**2**] afusSupportAjaxUploadWithProgress
|
||
|
|
```
|
||
|
|
|
||
|
|
```txt
|
||
|
|
[**3**] afusPassThroughEvent
|
||
|
|
[3 set 1] change event on input file
|
||
|
|
[3 call 3-A] file extension check
|
||
|
|
[3 call 3-B] file type check
|
||
|
|
[3 set 2] sets upload queue delete in fileChange function
|
||
|
|
[3 ext 2-1] fileRemove function
|
||
|
|
[3 ext] fileChange function
|
||
|
|
[3 ext] fileChangeAll
|
||
|
|
[3 set 3] call click submit if auto submit
|
||
|
|
```
|
||
|
|
|
||
|
|
```txt
|
||
|
|
[3-A] afusHasExtension
|
||
|
|
[3-B] afusHasFileType
|
||
|
|
```
|
||
|
|
|
||
|
|
```txt
|
||
|
|
[**4**] afusInitFullFormAjaxUpload
|
||
|
|
[4 set 1] on submit function
|
||
|
|
[4 ext] fileBeforeUploadAll function
|
||
|
|
[4 run 6] afusSendFile main file send (promise)
|
||
|
|
[4 run 5] call class for async submitter iterator
|
||
|
|
[4 on finally call 8-C] finally promise: afusFinalPostUpload
|
||
|
|
[4 on finally ext] finally promise: call fileUploadedAll external
|
||
|
|
```
|
||
|
|
|
||
|
|
```txt
|
||
|
|
[**5**] class afusAsyncUploader
|
||
|
|
[5-A] class constructor for init
|
||
|
|
[5-B] iterator internal loop method for processing files
|
||
|
|
```
|
||
|
|
|
||
|
|
```txt
|
||
|
|
[**6**] afusSendFile
|
||
|
|
[6 ext] fileBeforeUpload function
|
||
|
|
[6] main xhr uploader start
|
||
|
|
[6 set 7-A] loadstart event afusOnloadStartHandler
|
||
|
|
[6 set 7-C] progress event afusOnProgressHandler
|
||
|
|
[6 set 7-B] load event afusOnloadHandler
|
||
|
|
[6 set 7-D] readystatechange event afusOnReadyStateChangeHandler
|
||
|
|
```
|
||
|
|
|
||
|
|
```txt
|
||
|
|
[7-A] afusOnloadStartHandler
|
||
|
|
[7-A call 9-A] add +1 to running
|
||
|
|
[7-B] afusOnloadHandler
|
||
|
|
[7-C] afusOnProgressHandler
|
||
|
|
[7-D] afusOnReadyStateChangeHandler
|
||
|
|
[7-D call 9-B] -1 for running queue count
|
||
|
|
[7-D call 8-B] afusUploadError
|
||
|
|
[7-D call 8-A] if success afusPostUpload
|
||
|
|
[7-D ext] if error fileUploadError function
|
||
|
|
```
|
||
|
|
|
||
|
|
```txt
|
||
|
|
[8-A] afusPostUpload
|
||
|
|
[8-B] afusUploadError
|
||
|
|
[8-C] afusCancelUploadOutput
|
||
|
|
[8-D] afusFinalPostUpload
|
||
|
|
[8-E] afusResetInternalVariables
|
||
|
|
```
|
||
|
|
|
||
|
|
```txt
|
||
|
|
[9-A] afusRunningStart
|
||
|
|
[9-B] afusRunningStop
|
||
|
|
[9-C] afusRunningGet
|
||
|
|
```
|