From e4a7099d928fe626bc4695dae19a1dea2277f653 Mon Sep 17 00:00:00 2001 From: retrospectacus Date: Tue, 17 Jan 2017 05:01:33 -0800 Subject: [PATCH 1/5] fix(headers): Add FileItem headers to XHR (#553) fixes #552 --- components/file-upload/file-uploader.class.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/components/file-upload/file-uploader.class.ts b/components/file-upload/file-uploader.class.ts index ae03851..1fbb6db 100644 --- a/components/file-upload/file-uploader.class.ts +++ b/components/file-upload/file-uploader.class.ts @@ -337,15 +337,16 @@ export class FileUploader { }; xhr.open(item.method, item.url, true); xhr.withCredentials = item.withCredentials; - // todo - /*item.headers.map((value, name) => { - xhr.setRequestHeader(name, value); - });*/ if (this.options.headers) { for (let header of this.options.headers) { xhr.setRequestHeader(header.name, header.value); } } + if (item.headers.length) { + for (let header of item.headers) { + xhr.setRequestHeader(header.name, header.value); + } + } if (this.authToken) { xhr.setRequestHeader(this.authTokenHeader, this.authToken); } From 397de09e7d1170f20fe2bb05416822ba9a369f23 Mon Sep 17 00:00:00 2001 From: Florian Kinder Date: Tue, 17 Jan 2017 14:02:12 +0100 Subject: [PATCH 2/5] feat(fileUpload): added additionalParameter (#565) --- components/file-upload/file-uploader.class.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/components/file-upload/file-uploader.class.ts b/components/file-upload/file-uploader.class.ts index 1fbb6db..8e9b387 100644 --- a/components/file-upload/file-uploader.class.ts +++ b/components/file-upload/file-uploader.class.ts @@ -31,6 +31,7 @@ export interface FileUploaderOptions { disableMultipart?:boolean; itemAlias?: string; authTokenHeader?: string; + additionalParameter?:{[key: string]: any}; } export class FileUploader { @@ -307,6 +308,12 @@ export class FileUploader { this._onBuildItemForm(item, sendable); sendable.append(item.alias, item._file, item.file.name); + + if (this.options.additionalParameter !== undefined) { + Object.keys(this.options.additionalParameter).forEach((key:string) => { + sendable.append(key, this.options.additionalParameter[key]); + }); + } } else { sendable = item._file; } From 410efda505488c4948a3741609a3b665b65355cc Mon Sep 17 00:00:00 2001 From: Kevin FONTAINE Date: Tue, 17 Jan 2017 14:02:52 +0100 Subject: [PATCH 3/5] feat(file-select): Clear file select automatically (#524) --- components/file-upload/file-select.directive.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/file-upload/file-select.directive.ts b/components/file-upload/file-select.directive.ts index 4b8325c..3bef0b7 100644 --- a/components/file-upload/file-select.directive.ts +++ b/components/file-upload/file-select.directive.ts @@ -38,7 +38,7 @@ export class FileSelectDirective { this.uploader.addToQueue(files, options, filters); if (this.isEmptyAfterSelection()) { // todo - // this.element.nativeElement.properties.value = ''; + this.element.nativeElement.value = ''; /*this.element.nativeElement .replaceWith(this.element = this.element.nativeElement.clone(true)); // IE fix*/ } From d6e75984ed703bac4586c4c06d66f8d3fece613a Mon Sep 17 00:00:00 2001 From: Kevin FONTAINE Date: Tue, 17 Jan 2017 14:03:15 +0100 Subject: [PATCH 4/5] #492 Add FileItem in declaration ng2-file-upload.d.ts (#523) --- ng2-file-upload.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/ng2-file-upload.ts b/ng2-file-upload.ts index 804af65..9b2ca23 100644 --- a/ng2-file-upload.ts +++ b/ng2-file-upload.ts @@ -1,5 +1,6 @@ export * from './components/file-upload/file-select.directive'; export * from './components/file-upload/file-drop.directive'; export * from './components/file-upload/file-uploader.class'; +export * from './components/file-upload/file-item.class'; export { FileUploadModule } from './components/file-upload/file-upload.module'; From be70a823030be804f9a03f1c801f44bf2b8ddfe8 Mon Sep 17 00:00:00 2001 From: Daniel Kucal Date: Tue, 17 Jan 2017 14:07:03 +0100 Subject: [PATCH 5/5] Allow to extend classes (#468) * private accessors replaced by protected to allow extending of classes * FileItem class protected accessors --- components/file-upload/file-drop.directive.ts | 8 ++-- components/file-upload/file-item.class.ts | 6 +-- .../file-upload/file-select.directive.ts | 2 +- components/file-upload/file-uploader.class.ts | 38 +++++++++---------- 4 files changed, 27 insertions(+), 27 deletions(-) diff --git a/components/file-upload/file-drop.directive.ts b/components/file-upload/file-drop.directive.ts index 13d8f3b..cf271a7 100644 --- a/components/file-upload/file-drop.directive.ts +++ b/components/file-upload/file-drop.directive.ts @@ -8,7 +8,7 @@ export class FileDropDirective { @Output() public fileOver:EventEmitter = new EventEmitter(); @Output() public onFileDrop:EventEmitter = new EventEmitter(); - private element:ElementRef; + protected element:ElementRef; public constructor(element:ElementRef) { this.element = element; @@ -59,16 +59,16 @@ export class FileDropDirective { this.fileOver.emit(false); } - private _getTransfer(event:any):any { + protected _getTransfer(event:any):any { return event.dataTransfer ? event.dataTransfer : event.originalEvent.dataTransfer; // jQuery fix; } - private _preventAndStop(event:any):any { + protected _preventAndStop(event:any):any { event.preventDefault(); event.stopPropagation(); } - private _haveFiles(types:any):any { + protected _haveFiles(types:any):any { if (!types) { return false; } diff --git a/components/file-upload/file-item.class.ts b/components/file-upload/file-item.class.ts index c676860..17fe274 100644 --- a/components/file-upload/file-item.class.ts +++ b/components/file-upload/file-item.class.ts @@ -21,9 +21,9 @@ export class FileItem { public _xhr:XMLHttpRequest; public _form:any; - private uploader:FileUploader; - private some:File; - private options:FileUploaderOptions; + protected uploader:FileUploader; + protected some:File; + protected options:FileUploaderOptions; public constructor(uploader:FileUploader, some:File, options:FileUploaderOptions) { this.uploader = uploader; diff --git a/components/file-upload/file-select.directive.ts b/components/file-upload/file-select.directive.ts index 3bef0b7..ed84cba 100644 --- a/components/file-upload/file-select.directive.ts +++ b/components/file-upload/file-select.directive.ts @@ -8,7 +8,7 @@ import { FileUploader } from './file-uploader.class'; export class FileSelectDirective { @Input() public uploader:FileUploader; - private element:ElementRef; + protected element:ElementRef; public constructor(element:ElementRef) { this.element = element; diff --git a/components/file-upload/file-uploader.class.ts b/components/file-upload/file-uploader.class.ts index 8e9b387..5f17770 100644 --- a/components/file-upload/file-uploader.class.ts +++ b/components/file-upload/file-uploader.class.ts @@ -52,7 +52,7 @@ export class FileUploader { disableMultipart: false }; - private _failFilterIndex:number; + protected _failFilterIndex:number; public constructor(options:FileUploaderOptions) { this.setOptions(options); @@ -361,7 +361,7 @@ export class FileUploader { this._render(); } - private _getTotalProgress(value:number = 0):number { + protected _getTotalProgress(value:number = 0):number { if (this.options.removeAfterUpload) { return value; } @@ -372,7 +372,7 @@ export class FileUploader { return Math.round(uploaded * ratio + current); } - private _getFilters(filters:FilterFunction[]|string):FilterFunction[] { + protected _getFilters(filters:FilterFunction[]|string):FilterFunction[] { if (!filters) { return this.options.filters; } @@ -387,20 +387,20 @@ export class FileUploader { return this.options.filters; } - private _render():any { + protected _render():any { return void 0; // todo: ? } - // private _folderFilter(item:FileItem):boolean { + // protected _folderFilter(item:FileItem):boolean { // return !!(item.size || item.type); // } - private _queueLimitFilter():boolean { + protected _queueLimitFilter():boolean { return this.options.queueLimit === undefined || this.queue.length < this.options.queueLimit; } - private _isValidFile(file:FileLikeObject, filters:FilterFunction[], options:FileUploaderOptions):boolean { + protected _isValidFile(file:FileLikeObject, filters:FilterFunction[], options:FileUploaderOptions):boolean { this._failFilterIndex = -1; return !filters.length ? true : filters.every((filter:FilterFunction) => { this._failFilterIndex++; @@ -408,12 +408,12 @@ export class FileUploader { }); } - private _isSuccessCode(status:number):boolean { + protected _isSuccessCode(status:number):boolean { return (status >= 200 && status < 300) || status === 304; } /* tslint:disable */ - private _transformResponse(response:string, headers:ParsedResponseHeaders):string { + protected _transformResponse(response:string, headers:ParsedResponseHeaders):string { // todo: ? /*var headersGetter = this._headersGetter(headers); forEach($http.defaults.transformResponse, (transformFn) => { @@ -423,7 +423,7 @@ export class FileUploader { } /* tslint:enable */ - private _parseHeaders(headers:string):ParsedResponseHeaders { + protected _parseHeaders(headers:string):ParsedResponseHeaders { let parsed:any = {}; let key:any; let val:any; @@ -442,33 +442,33 @@ export class FileUploader { return parsed; } - /*private _iframeTransport(item:FileItem) { + /*protected _iframeTransport(item:FileItem) { // todo: implement it later }*/ - private _onWhenAddingFileFailed(item:FileLikeObject, filter:any, options:any):void { + protected _onWhenAddingFileFailed(item:FileLikeObject, filter:any, options:any):void { this.onWhenAddingFileFailed(item, filter, options); } - private _onAfterAddingFile(item:FileItem):void { + protected _onAfterAddingFile(item:FileItem):void { this.onAfterAddingFile(item); } - private _onAfterAddingAll(items:any):void { + protected _onAfterAddingAll(items:any):void { this.onAfterAddingAll(items); } - private _onBeforeUploadItem(item:FileItem):void { + protected _onBeforeUploadItem(item:FileItem):void { item._onBeforeUpload(); this.onBeforeUploadItem(item); } - private _onBuildItemForm(item:FileItem, form:any):void { + protected _onBuildItemForm(item:FileItem, form:any):void { item._onBuildForm(form); this.onBuildItemForm(item, form); } - private _onProgressItem(item:FileItem, progress:any):void { + protected _onProgressItem(item:FileItem, progress:any):void { let total = this._getTotalProgress(progress); this.progress = total; item._onProgress(progress); @@ -478,13 +478,13 @@ export class FileUploader { } /* tslint:disable */ - private _onSuccessItem(item:FileItem, response:string, status:number, headers:ParsedResponseHeaders):void { + protected _onSuccessItem(item:FileItem, response:string, status:number, headers:ParsedResponseHeaders):void { item._onSuccess(response, status, headers); this.onSuccessItem(item, response, status, headers); } /* tslint:enable */ - private _onCancelItem(item:FileItem, response:string, status:number, headers:ParsedResponseHeaders):void { + protected _onCancelItem(item:FileItem, response:string, status:number, headers:ParsedResponseHeaders):void { item._onCancel(response, status, headers); this.onCancelItem(item, response, status, headers); }