1 import { objectToFormData } from '@app/helpers'
2 import { resolveUrl, UploaderX } from 'ngx-uploadx'
5 * multipart/form-data uploader extending the UploaderX implementation of Google Resumable
8 * @see https://github.com/kukhariev/ngx-uploadx/blob/637e258fe366b8095203f387a6101a230ee4f8e6/src/uploadx/lib/uploaderx.ts
11 * options: UploadxOptions = {
12 * uploaderClass: UploaderXFormData
15 export class UploaderXFormData extends UploaderX {
17 async getFileUrl (): Promise<string> {
19 'X-Upload-Content-Length': this.size.toString(),
20 'X-Upload-Content-Type': this.file.type || 'application/octet-stream'
23 const previewfile = this.metadata.previewfile as any as File
24 delete this.metadata.previewfile
26 const data = objectToFormData(this.metadata)
27 if (previewfile !== undefined) {
28 data.append('previewfile', previewfile, previewfile.name)
29 data.append('thumbnailfile', previewfile, previewfile.name)
39 const location = this.getValueFromResponse('location')
41 throw new Error('Invalid or missing Location header')
44 this.offset = this.responseStatus === 201 ? 0 : undefined
46 return resolveUrl(location, this.endpoint)