@duoduo-oba/ng-devui
Version:
DevUI components based on Angular
134 lines • 12.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: file-uploader.class.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { UploadStatus } from './file-uploader.types';
export class FileUploader {
/**
* @param {?} file
* @param {?} uploadOptions
*/
constructor(file, uploadOptions) {
this.file = file;
this.uploadOptions = uploadOptions;
this.percentage = 0;
this.file = file;
this.uploadOptions = uploadOptions;
this.status = UploadStatus.preLoad;
}
/**
* @return {?}
*/
send() {
return new Promise((/**
* @param {?} resolve
* @param {?} reject
* @return {?}
*/
(resolve, reject) => {
const { uri, method, headers, authToken, authTokenHeader, additionalParameter, fileFieldName, withCredentials } = this.uploadOptions;
/** @type {?} */
const authTokenHeader_ = authTokenHeader || 'Authorization';
/** @type {?} */
const fileFieldName_ = fileFieldName || 'file';
this.xhr = new XMLHttpRequest();
this.xhr.open(method || 'POST', uri);
if (withCredentials) {
this.xhr.withCredentials = withCredentials;
}
if (authToken) {
this.xhr.setRequestHeader(authTokenHeader_, authToken);
}
if (headers) {
Object.keys(headers).forEach((/**
* @param {?} key
* @return {?}
*/
(key) => {
this.xhr.setRequestHeader(key, headers[key]);
}));
}
this.xhr.upload.onprogress = (/**
* @param {?} e
* @return {?}
*/
e => {
this.percentage = Math.round(e.loaded * 100 / e.total);
});
/** @type {?} */
const formData = new FormData();
formData.append(fileFieldName_, this.file);
if (additionalParameter) {
Object.keys(additionalParameter).forEach((/**
* @param {?} key
* @return {?}
*/
(key) => {
formData.append(key, additionalParameter[key]);
}));
}
this.xhr.send(formData);
this.status = UploadStatus.uploading;
this.xhr.onabort = (/**
* @return {?}
*/
() => {
this.status = UploadStatus.preLoad;
this.xhr = null;
});
this.xhr.onerror = (/**
* @return {?}
*/
() => {
this.response = this.xhr.response;
this.status = UploadStatus.failed;
reject(new Error('Upload failed in some reason.'));
});
this.xhr.onload = (/**
* @return {?}
*/
() => {
if (this.xhr.readyState === 4 && this.xhr.status >= 200 && this.xhr.status < 300) {
this.response = this.xhr.response;
this.status = UploadStatus.uploaded;
resolve({ file: this.file, response: this.xhr.response });
}
else {
this.response = this.xhr.response;
this.status = UploadStatus.failed;
reject({ file: this.file, response: this.xhr.response });
}
});
}));
}
/**
* @return {?}
*/
cancel() {
if (this.xhr) {
this.xhr.abort();
}
}
}
if (false) {
/**
* @type {?}
* @private
*/
FileUploader.prototype.xhr;
/** @type {?} */
FileUploader.prototype.status;
/** @type {?} */
FileUploader.prototype.response;
/** @type {?} */
FileUploader.prototype.percentage;
/** @type {?} */
FileUploader.prototype.file;
/**
* @type {?}
* @private
*/
FileUploader.prototype.uploadOptions;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS11cGxvYWRlci5jbGFzcy5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLWRldnVpL3VwbG9hZC8iLCJzb3VyY2VzIjpbImZpbGUtdXBsb2FkZXIuY2xhc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBRUwsWUFBWSxFQUNiLE1BQU0sdUJBQXVCLENBQUM7QUFFL0IsTUFBTSxPQUFPLFlBQVk7Ozs7O0lBTXZCLFlBQW1CLElBQVUsRUFDbkIsYUFBNkI7UUFEcEIsU0FBSSxHQUFKLElBQUksQ0FBTTtRQUNuQixrQkFBYSxHQUFiLGFBQWEsQ0FBZ0I7UUFIaEMsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUlwQixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUM7SUFDckMsQ0FBQzs7OztJQUVNLElBQUk7UUFDVCxPQUFPLElBQUksT0FBTzs7Ozs7UUFBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtrQkFDL0IsRUFDSixHQUFHLEVBQ0gsTUFBTSxFQUNOLE9BQU8sRUFDUCxTQUFTLEVBQ1QsZUFBZSxFQUNmLG1CQUFtQixFQUNuQixhQUFhLEVBQ2IsZUFBZSxFQUNoQixHQUFHLElBQUksQ0FBQyxhQUFhOztrQkFDaEIsZ0JBQWdCLEdBQUcsZUFBZSxJQUFJLGVBQWU7O2tCQUNyRCxjQUFjLEdBQUcsYUFBYSxJQUFJLE1BQU07WUFFOUMsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFFckMsSUFBSSxlQUFlLEVBQUU7Z0JBQ25CLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQzthQUM1QztZ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RUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7aUJBQzFEO1lBQ0gsQ0FBQyxDQUFBLENBQUM7UUFDSixDQUFDLEVBQUMsQ0FBQztJQUNMLENBQUM7Ozs7SUFFTSxNQUFNO1FBQ1gsSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUNsQjtJQUNILENBQUM7Q0FDRjs7Ozs7O0lBekZDLDJCQUE0Qjs7SUFDNUIsOEJBQTRCOztJQUM1QixnQ0FBcUI7O0lBQ3JCLGtDQUFzQjs7SUFFViw0QkFBaUI7Ozs7O0lBQzNCLHFDQUFxQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgSVVwbG9hZE9wdGlvbnMsXHJcbiAgVXBsb2FkU3RhdHVzXHJcbn0gZnJvbSAnLi9maWxlLXVwbG9hZGVyLnR5cGVzJztcclxuXHJcbmV4cG9ydCBjbGFzcyBGaWxlVXBsb2FkZXIge1xyXG4gIHByaXZhdGUgeGhyOiBYTUxIdHRwUmVxdWVzdDtcclxuICBwdWJsaWMgc3RhdHVzOiBVcGxvYWRTdGF0dXM7XHJcbiAgcHVibGljIHJlc3BvbnNlOiBhbnk7XHJcbiAgcHVibGljIHBlcmNlbnRhZ2UgPSAwO1xyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZmlsZTogRmlsZSxcclxuICAgIHByaXZhdGUgdXBsb2FkT3B0aW9uczogSVVwbG9hZE9wdGlvbnMpIHtcclxuICAgIHRoaXMuZmlsZSA9IGZpbGU7XHJcbiAgICB0aGlzLnVwbG9hZE9wdGlvbnMgPSB1cGxvYWRPcHRpb25zO1xyXG4gICAgdGhpcy5zdGF0dXMgPSBVcGxvYWRTdGF0dXMucHJlTG9hZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZW5kKCk6IFByb21pc2U8eyBmaWxlOiBGaWxlLCByZXNwb25zZTogYW55IH0+IHtcclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgIGNvbnN0IHtcclxuICAgICAgICB1cmksXHJcbiAgICAgICAgbWV0aG9kLFxyXG4gICAgICAgIGhlYWRlcnMsXHJcbiAgICAgICAgYXV0aFRva2VuLFxyXG4gICAgICAgIGF1dGhUb2tlbkhlYWRlcixcclxuICAgICAgICBhZGRpdGlvbmFsUGFyYW1ldGVyLFxyXG4gICAgICAgIGZpbGVGaWVsZE5hbWUsXHJcbiAgICAgICAgd2l0aENyZWRlbnRpYWxzXHJcbiAgICAgIH0gPSB0aGlzLnVwbG9hZE9wdGlvbnM7XHJcbiAgICAgIGNvbnN0IGF1dGhUb2tlbkhlYWRlcl8gPSBhdXRoVG9rZW5IZWFkZXIgfHwgJ0F1dGhvcml6YXRpb24nO1xyXG4gICAgICBjb25zdCBmaWxlRmllbGROYW1lXyA9IGZpbGVGaWVsZE5hbWUgfHwgJ2ZpbGUnO1xyXG5cclxuICAgICAgdGhpcy54aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTtcclxuICAgICAgdGhpcy54aHIub3BlbihtZXRob2QgfHwgJ1BPU1QnLCB1cmkpO1xyXG5cclxuICAgICAgaWYgKHdpdGhDcmVkZW50aWFscykge1xyXG4gICAgICAgIHRoaXMueGhyLndpdGhDcmVkZW50aWFscyA9IHdpdGhDcmVkZW50aWFscztcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGF1dGhUb2tlbikge1xyXG4gICAgICAgIHRoaXMueGhyLnNldFJlcXVlc3RIZWFkZXIoYXV0aFRva2VuSGVhZGVyXywgYXV0aFRva2VuKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKGhlYWRlcnMpIHtcclxuICAgICAgICBPYmplY3Qua2V5cyhoZWFkZXJzKS5mb3JFYWNoKChrZXkpID0+IHtcclxuICAgICAgICAgIHRoaXMueGhyLnNldFJlcXVlc3RIZWFkZXIoa2V5LCBoZWFkZXJzW2tleV0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLnhoci51cGxvYWQub25wcm9ncmVzcyA9IGUgPT4ge1xyXG4gICAgICAgIHRoaXMucGVyY2VudGFnZSA9IE1hdGgucm91bmQoZS5sb2FkZWQgKiAxMDAgLyBlLnRvdGFsKTtcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICAgIGZvcm1EYXRhLmFwcGVuZChmaWxlRmllbGROYW1lXywgdGhpcy5maWxlKTtcclxuICAgICAgaWYgKGFkZGl0aW9uYWxQYXJhbWV0ZXIpIHtcclxuICAgICAgICBPYmplY3Qua2V5cyhhZGRpdGlvbmFsUGFyYW1ldGVyKS5mb3JFYWNoKChrZXk6IHN0cmluZykgPT4ge1xyXG4gICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGtleSwgYWRkaXRpb25hbFBhcmFtZXRlcltrZXldKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy54aHIuc2VuZChmb3JtRGF0YSk7XHJcbiAgICAgIHRoaXMuc3RhdHVzID0gVXBsb2FkU3RhdHVzLnVwbG9hZGluZztcclxuXHJcbiAgICAgIHRoaXMueGhyLm9uYWJvcnQgPSAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5zdGF0dXMgPSBVcGxvYWRTdGF0dXMucHJlTG9hZDtcclxuICAgICAgICB0aGlzLnhociA9IG51bGw7XHJcbiAgICAgIH07XHJcblxyXG4gICAgICB0aGlzLnhoci5vbmVycm9yID0gKCkgPT4ge1xyXG4gICAgICAgIHRoaXMucmVzcG9uc2UgPSB0aGlzLnhoci5yZXNwb25zZTtcclxuICAgICAgICB0aGlzLnN0YXR1cyA9IFVwbG9hZFN0YXR1cy5mYWlsZWQ7XHJcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignVXBsb2FkIGZhaWxlZCBpbiBzb21lIHJlYXNvbi4nKSk7XHJcbiAgICAgIH07XHJcblxyXG4gICAgICB0aGlzLnhoci5vbmxvYWQgPSAoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMueGhyLnJlYWR5U3RhdGUgPT09IDQgJiYgdGhpcy54aHIuc3RhdHVzID49IDIwMCAmJiB0aGlzLnhoci5zdGF0dXMgPCAzMDApIHtcclxuICAgICAgICAgIHRoaXMucmVzcG9uc2UgPSB0aGlzLnhoci5yZXNwb25zZTtcclxuICAgICAgICAgIHRoaXMuc3RhdHVzID0gVXBsb2FkU3RhdHVzLnVwbG9hZGVkO1xyXG4gICAgICAgICAgcmVzb2x2ZSh7IGZpbGU6IHRoaXMuZmlsZSwgcmVzcG9uc2U6IHRoaXMueGhyLnJlc3BvbnNlIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3BvbnNlID0gdGhpcy54aHIucmVzcG9uc2U7XHJcbiAgICAgICAgICB0aGlzLnN0YXR1cyA9IFVwbG9hZFN0YXR1cy5mYWlsZWQ7XHJcbiAgICAgICAgICByZWplY3QoeyBmaWxlOiB0aGlzLmZpbGUsIHJlc3BvbnNlOiB0aGlzLnhoci5yZXNwb25zZSB9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH07XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjYW5jZWwoKSB7XHJcbiAgICBpZiAodGhpcy54aHIpIHtcclxuICAgICAgdGhpcy54aHIuYWJvcnQoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19