Merge branch 'development' of github.com:valor-software/ng2-file-upload into development

This commit is contained in:
Dmitriy Shekhovtsov
2017-01-17 15:58:36 +02:00
5 changed files with 41 additions and 32 deletions

View File

@@ -8,7 +8,7 @@ export class FileDropDirective {
@Output() public fileOver:EventEmitter<any> = new EventEmitter(); @Output() public fileOver:EventEmitter<any> = new EventEmitter();
@Output() public onFileDrop:EventEmitter<File[]> = new EventEmitter<File[]>(); @Output() public onFileDrop:EventEmitter<File[]> = new EventEmitter<File[]>();
private element:ElementRef; protected element:ElementRef;
public constructor(element:ElementRef) { public constructor(element:ElementRef) {
this.element = element; this.element = element;
@@ -61,16 +61,16 @@ export class FileDropDirective {
this.fileOver.emit(false); this.fileOver.emit(false);
} }
private _getTransfer(event:any):any { protected _getTransfer(event:any):any {
return event.dataTransfer ? event.dataTransfer : event.originalEvent.dataTransfer; // jQuery fix; return event.dataTransfer ? event.dataTransfer : event.originalEvent.dataTransfer; // jQuery fix;
} }
private _preventAndStop(event:any):any { protected _preventAndStop(event:any):any {
event.preventDefault(); event.preventDefault();
event.stopPropagation(); event.stopPropagation();
} }
private _haveFiles(types:any):any { protected _haveFiles(types:any):any {
if (!types) { if (!types) {
return false; return false;
} }

View File

@@ -21,9 +21,9 @@ export class FileItem {
public _xhr:XMLHttpRequest; public _xhr:XMLHttpRequest;
public _form:any; public _form:any;
private uploader:FileUploader; protected uploader:FileUploader;
private some:File; protected some:File;
private options:FileUploaderOptions; protected options:FileUploaderOptions;
public constructor(uploader:FileUploader, some:File, options:FileUploaderOptions) { public constructor(uploader:FileUploader, some:File, options:FileUploaderOptions) {
this.uploader = uploader; this.uploader = uploader;

View File

@@ -8,7 +8,7 @@ import { FileUploader } from './file-uploader.class';
export class FileSelectDirective { export class FileSelectDirective {
@Input() public uploader:FileUploader; @Input() public uploader:FileUploader;
private element:ElementRef; protected element:ElementRef;
public constructor(element:ElementRef) { public constructor(element:ElementRef) {
this.element = element; this.element = element;
@@ -38,7 +38,7 @@ export class FileSelectDirective {
this.uploader.addToQueue(files, options, filters); this.uploader.addToQueue(files, options, filters);
if (this.isEmptyAfterSelection()) { if (this.isEmptyAfterSelection()) {
// todo // todo
// this.element.nativeElement.properties.value = ''; this.element.nativeElement.value = '';
/*this.element.nativeElement /*this.element.nativeElement
.replaceWith(this.element = this.element.nativeElement.clone(true)); // IE fix*/ .replaceWith(this.element = this.element.nativeElement.clone(true)); // IE fix*/
} }

View File

@@ -31,6 +31,7 @@ export interface FileUploaderOptions {
disableMultipart?:boolean; disableMultipart?:boolean;
itemAlias?: string; itemAlias?: string;
authTokenHeader?: string; authTokenHeader?: string;
additionalParameter?:{[key: string]: any};
} }
export class FileUploader { export class FileUploader {
@@ -51,7 +52,7 @@ export class FileUploader {
disableMultipart: false disableMultipart: false
}; };
private _failFilterIndex:number; protected _failFilterIndex:number;
public constructor(options:FileUploaderOptions) { public constructor(options:FileUploaderOptions) {
this.setOptions(options); this.setOptions(options);
@@ -307,6 +308,12 @@ export class FileUploader {
this._onBuildItemForm(item, sendable); this._onBuildItemForm(item, sendable);
sendable.append(item.alias, item._file, item.file.name); 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 { } else {
sendable = item._file; sendable = item._file;
} }
@@ -337,15 +344,16 @@ export class FileUploader {
}; };
xhr.open(item.method, item.url, true); xhr.open(item.method, item.url, true);
xhr.withCredentials = item.withCredentials; xhr.withCredentials = item.withCredentials;
// todo
/*item.headers.map((value, name) => {
xhr.setRequestHeader(name, value);
});*/
if (this.options.headers) { if (this.options.headers) {
for (let header of this.options.headers) { for (let header of this.options.headers) {
xhr.setRequestHeader(header.name, header.value); 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) { if (this.authToken) {
xhr.setRequestHeader(this.authTokenHeader, this.authToken); xhr.setRequestHeader(this.authTokenHeader, this.authToken);
} }
@@ -353,7 +361,7 @@ export class FileUploader {
this._render(); this._render();
} }
private _getTotalProgress(value:number = 0):number { protected _getTotalProgress(value:number = 0):number {
if (this.options.removeAfterUpload) { if (this.options.removeAfterUpload) {
return value; return value;
} }
@@ -364,7 +372,7 @@ export class FileUploader {
return Math.round(uploaded * ratio + current); return Math.round(uploaded * ratio + current);
} }
private _getFilters(filters:FilterFunction[]|string):FilterFunction[] { protected _getFilters(filters:FilterFunction[]|string):FilterFunction[] {
if (!filters) { if (!filters) {
return this.options.filters; return this.options.filters;
} }
@@ -379,20 +387,20 @@ export class FileUploader {
return this.options.filters; return this.options.filters;
} }
private _render():any { protected _render():any {
return void 0; return void 0;
// todo: ? // todo: ?
} }
// private _folderFilter(item:FileItem):boolean { // protected _folderFilter(item:FileItem):boolean {
// return !!(item.size || item.type); // return !!(item.size || item.type);
// } // }
private _queueLimitFilter():boolean { protected _queueLimitFilter():boolean {
return this.options.queueLimit === undefined || this.queue.length < this.options.queueLimit; 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; this._failFilterIndex = -1;
return !filters.length ? true : filters.every((filter:FilterFunction) => { return !filters.length ? true : filters.every((filter:FilterFunction) => {
this._failFilterIndex++; this._failFilterIndex++;
@@ -400,12 +408,12 @@ export class FileUploader {
}); });
} }
private _isSuccessCode(status:number):boolean { protected _isSuccessCode(status:number):boolean {
return (status >= 200 && status < 300) || status === 304; return (status >= 200 && status < 300) || status === 304;
} }
/* tslint:disable */ /* tslint:disable */
private _transformResponse(response:string, headers:ParsedResponseHeaders):string { protected _transformResponse(response:string, headers:ParsedResponseHeaders):string {
// todo: ? // todo: ?
/*var headersGetter = this._headersGetter(headers); /*var headersGetter = this._headersGetter(headers);
forEach($http.defaults.transformResponse, (transformFn) => { forEach($http.defaults.transformResponse, (transformFn) => {
@@ -415,7 +423,7 @@ export class FileUploader {
} }
/* tslint:enable */ /* tslint:enable */
private _parseHeaders(headers:string):ParsedResponseHeaders { protected _parseHeaders(headers:string):ParsedResponseHeaders {
let parsed:any = {}; let parsed:any = {};
let key:any; let key:any;
let val:any; let val:any;
@@ -434,33 +442,33 @@ export class FileUploader {
return parsed; return parsed;
} }
/*private _iframeTransport(item:FileItem) { /*protected _iframeTransport(item:FileItem) {
// todo: implement it later // 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); this.onWhenAddingFileFailed(item, filter, options);
} }
private _onAfterAddingFile(item:FileItem):void { protected _onAfterAddingFile(item:FileItem):void {
this.onAfterAddingFile(item); this.onAfterAddingFile(item);
} }
private _onAfterAddingAll(items:any):void { protected _onAfterAddingAll(items:any):void {
this.onAfterAddingAll(items); this.onAfterAddingAll(items);
} }
private _onBeforeUploadItem(item:FileItem):void { protected _onBeforeUploadItem(item:FileItem):void {
item._onBeforeUpload(); item._onBeforeUpload();
this.onBeforeUploadItem(item); this.onBeforeUploadItem(item);
} }
private _onBuildItemForm(item:FileItem, form:any):void { protected _onBuildItemForm(item:FileItem, form:any):void {
item._onBuildForm(form); item._onBuildForm(form);
this.onBuildItemForm(item, form); this.onBuildItemForm(item, form);
} }
private _onProgressItem(item:FileItem, progress:any):void { protected _onProgressItem(item:FileItem, progress:any):void {
let total = this._getTotalProgress(progress); let total = this._getTotalProgress(progress);
this.progress = total; this.progress = total;
item._onProgress(progress); item._onProgress(progress);
@@ -470,13 +478,13 @@ export class FileUploader {
} }
/* tslint:disable */ /* 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); item._onSuccess(response, status, headers);
this.onSuccessItem(item, response, status, headers); this.onSuccessItem(item, response, status, headers);
} }
/* tslint:enable */ /* 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); item._onCancel(response, status, headers);
this.onCancelItem(item, response, status, headers); this.onCancelItem(item, response, status, headers);
} }

View File

@@ -1,5 +1,6 @@
export * from './components/file-upload/file-select.directive'; export * from './components/file-upload/file-select.directive';
export * from './components/file-upload/file-drop.directive'; export * from './components/file-upload/file-drop.directive';
export * from './components/file-upload/file-uploader.class'; 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'; export { FileUploadModule } from './components/file-upload/file-upload.module';