Angular2使用ng2-file-upload上传文件

Angular2中有两个比较好用的上传文件的第三方库,一个是ng2-file-upload,一个是ng2-uploader。ng2-uploader是一个轻便的上传文件的支持库,功能较弱,而ng2-file-upload是一个功能比较全面的上传文件的支持库。这里主要介绍一下ng2-file-upload的使用。

以下以Mac OS操作系统介绍。

作者:Shmily落墨

链接:https://www.jianshu.com/p/0741186f60ab

           https://segmentfault.com/a/1190000007886391

            http://www.php.cn/js-tutorial-399182.html

來源:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


1. 安装

使用npm安装即可。在项目中打开“终端”,运行命令:

sudo npm install ng2-file-upload --save

如果是以systemjs的方式打包,安装完成后需要打开systemjs.config.js文件,在System.config的map字段中的最后一行输入以下字段:

'ng2-file-upload':'npm:ng2-file-upload'

在System.config的packages字段中的最后一行输入:

'ng2-file-upload': {        main:'index.js',        defaultExtension:'js'}

之后便可以在项目中使用了。

2. 使用

在需要用到的模块中引用模块:

import{ CommonModule }from'@angular/common';import{ FileUploadModule }from'ng2-file-upload';

然后在@NgModule的imports字段中引用CommonModule和FileUploadModule。

在对应需要使用的组件内引用:

import{ FileUploader }from'ng2-file-upload';

初始化FileUploader:

uploader:FileUploader =newFileUploader({        url:"http://www.download.com:80/uploadFile",      method:"POST",        itemAlias:"uploadedfile"});

初始化FileUploader需要传入FileUploaderOptions类型的参数:

| 参数名 | 参数类型 | 是否是可选值 | 参数说明 |

|:---- --:|:--------:|:-------------:|:--------:|

| allowedMimeType | Array | 可选值 |  |

| allowedFileType | Array | 可选值 | 允许上传的文件类型 |

| autoUpload | boolean | 可选值 | 是否自动上传 |

| isHTML5 | boolean | 可选值 | 是否是HTML5 |

| filters | Array | 可选值 |  |

| headers | Array | 可选值 | 上传文件的请求头参数 |

| method | string | 可选值 | 上传文件的方式 |

| authToken | string | 可选值 | auth验证的token |

| maxFileSize | number | 可选值 | 最大可上传文件的大小 |

| queueLimit | number | 可选值 |  |

| removeAfterUpload | boolean | 可选值 | 是否在上传完成后从队列中移除 |

| url | string | 可选值 | 上传地址 |

| disableMultipart | boolean | 可选值 |  |

| itemAlias | string | 可选值 | 文件标记/别名 |

| authTokenHeader | string | 可选值 | auth验证token的请求头 |

2.1 选择文件

在组件对应的HTML模版中设置input标签:

在组件.ts文件中设置声明函数:

selectedFileOnChanged() {// 这里是文件选择完成后的操作处理}

选择文件默认支持选择单个文件,如需支持文件多选,请在标签中添加multiple属性,即:

2.2 拖拽文件

拖拽文件默认支持多文件拖拽。

对块级元素进行设置(这里以div标签为例):

在组件.ts文件中设置声明函数:

fileOverBase(event) {// 拖拽状态改变的回调函数}fileDropOver(event) {// 文件拖拽完成的回调函数}

2.3 文件上传

FileUploader有个数组类型的属性queue,里面是所有拖拽的和选择的文件,只要操作这个属性便可以进行文件上传。

this.uploader.queue[0].onSuccess =(response, status, headers) =>{// 上传文件成功  if(status ==200) {// 上传文件后获取服务器返回的数据lettempRes =JSON.parse(response);            }else{// 上传文件后获取服务器返回的数据错误        }};this.uploader.queue[0].upload();// 开始上传

3. FileUploader详解

FileUploader是ng2-file-upload最主要的部件,里面包含了所有对文件的处理。

3.1 属性详解

isUploading:[boolean]是否正在上传文件中。

queue:[array]已经拖拽或选择的所有文件。

progress:[number]所有的上传文件的整体进度。

options:[FileUploaderOptions]上传文件的配置信息,前面已经介绍过。

3.2 方法详解

setOptions(options: FileUploaderOptions): void;

设置上传文件的配置信息。

addToQueue(files: File[], options?: FileUploaderOptions, filters?: FilterFunction[] | string): void;

手动添加文件到FileUploader的上传队列中。

removeFromQueue(value: FileItem): void;

从FileUploader的上传队列中移除指定文件。

clearQueue(): void;

清除FileUploader上传队列中的所有文件。

uploadItem(value: FileItem): void;

上传指定文件。

cancelItem(value: FileItem): void;

取消指定文件的上传。

uploadAll(): void;

上传FileUploader的上传队列中的所有文件。

cancelAll(): void;

取消FileUploader的上传队列中的所有文件的上传。

isFile(value: any): boolean;

判断是否是文件。

getIndexOfItem(value: any): number;

获取文件在FileUploader上传队列中的位置。

getNotUploadedItems(): Array;

获取FileUploader上传队列中的所有未上传的文件。

getReadyItems(): Array;

获取FileUploader上传队列中的所有准备上传的文件。

destroy(): void;

销毁FileUploader实例。

3.3 监听详解

onAfterAddingAll(fileItems: any): any;

添加完所有文件之后的回调

返回:

fileItems - 添加的文件的数组

onBuildItemForm(fileItem: FileItem, form: any): any;

创建文件之后的回调

返回:

fileItem - 创建的文件

form - 添加的方式

onAfterAddingFile(fileItem: FileItem): any;

添加一个文件之后的回调

返回:

fileItem - 添加的文件

onWhenAddingFileFailed(item: FileLikeObject, filter: any, options: any): any;

添加文件失败的回调

返回:

item -

filter -

options -

onBeforeUploadItem(fileItem: FileItem): any;

要上传文件之前的回调

返回:

fileItem - 将要上传的文件

onProgressItem(fileItem: FileItem, progress: any): any;

上传文件的进度(开始上传后调用非常频繁)

返回:

fileItem - 正在上传的文件

progress - 该文件的上传进度

onProgressAll(progress: any): any;

整体的上传进度的回调(开始上传后调用非常频繁)

返回:

progress - 整体的上传文件的进度

onSuccessItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any;

上传一个文件成功的回调

返回:

item - 上传成功的文件

response - 上传成功后服务器的返回

status - 状态码

headers - 上传成功后服务器的返回的返回头

onErrorItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any;

上传一个文件错误的回调

返回:

item - 上传错误的文件

response - 返回的错误

status - 状态码

headers - 返回的错误返回头

onCancelItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any;

取消上传一个文件的回调

返回:

item - 取消上传的文件

response - 取消的返回信息

status - 状态码

headers - 取消的返回信息的返回头

onCompleteItem(item: FileItem, response: string, status: number, headers: ParsedResponseHeaders): any;

完成上传一个文件的回调

返回:

item - 上传成功的文件

response - 上传成功后服务器的返回

status - 状态码

headers - 上传成功后服务器的返回的返回头

onCompleteAll(): any;

完成上传所有文件的回调

4. FileItem详解

FileItem是FileUploader中queue属性的元素类型,在FileUploader中存储的文件的基本类型。

4.1 属性详解

alias[string]: 上传的标志/别名。

url[string]: 地址。

method[string]: 上传的方法。

headers[any]: 上传的头部参数。

withCredentials:[boolean]: 是否使用证书。

formData[any]: 格式化数据?

isReady[boolean]: 是否准备上传(是否可以上传)。

isUploading[boolean]: 是否正在上传。

isUploaded[boolean]: 是否已经上传过。

isSuccess[boolean]: 是否上传成功。

isCancel[boolean]: 是否取消上传。

isError[boolean]: 是否上传错误。

progress[number]: 上传进度。

index[number]: 在队列中的位置。

4.2 方法详解

upload(): void;

开始上传这个文件。

cancel(): void;

取消上传这个文件。

remove(): void;

将这个文件从上传队列中移除。

4.3 监听详解

onBeforeUpload(): void;

开始上传之前的回调函数。

onBuildForm(form: any): any;

创建文件的回调函数。

返回:

form - 文件来源。

onProgress(progress: number): any;

上传文件的进度回调函数。

返回:

progress - 上传文件的进度。

onSuccess(response: string, status: number, headers: ParsedResponseHeaders): any;

上传文件成功的回调函数。

返回:

response - 成功后的回调数据

status - 状态码

headers - 回调数据的返回头

onError(response: string, status: number, headers: ParsedResponseHeaders): any;

上传文件错误的回调函数。

onCancel(response: string, status: number, headers: ParsedResponseHeaders): any;

取消上传的回调函数。

onComplete(response: string, status: number, headers: ParsedResponseHeaders): any;

上传文件完成的回调函数。

作者:Shmily落墨

链接:https://www.jianshu.com/p/0741186f60ab

來源:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

你可能感兴趣的:(Angular2使用ng2-file-upload上传文件)