Files
t-admin/uni_modules/uni-media-library/common/uploader/base.js
T
2025-06-13 21:16:12 +08:00

63 lines
1.4 KiB
JavaScript

import createUploaderProviderInstance from './provider'
class Uploader {
constructor(props) {
props = Object.assign({
provider: 'internal'
}, props)
this.uploaderInstance = createUploaderProviderInstance(props.provider)
this.imageLibraryProvider = props.imageLibraryProvider
this.callbacks = {}
this.waitUploadFiles = []
this.uploaderInstance.on('progress', (data) => {
this.emit('progress', data)
})
this.uploaderInstance.on('success', (data) => {
this.emit('success', data)
})
this.uploaderInstance.on('error', (data) => {
this.emit('error', data)
})
}
on (event, callback) {
this.callbacks[event] = callback
}
emit (event, data) {
if (this.callbacks[event]) {
this.callbacks[event](data)
}
}
async add (file) {
if (file instanceof Array) {
const files = await this.normalizeFiles(file)
this.waitUploadFiles = this.waitUploadFiles.concat(files)
} else {
this.waitUploadFiles.push(
await this.normalizeFiles([file])
)
}
}
async upload () {
return this.uploaderInstance.upload(this.waitUploadFiles)
}
async cloudUpload () {
return this.uploaderInstance.cloudUpload(this.waitUploadFiles, {
imageLibraryProvider: this.imageLibraryProvider
})
}
normalizeFiles (files) {
return Promise.resolve(files)
}
}
export default Uploader