angular2 ng2-file-upload上传示例代码


Posted in Javascript onAugust 23, 2018

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

ng2-file-upload文件上传

1、安装ng2-file-upload模块

npm install ng2-file-upload --save

2、如果使用systemjs打包,需要在配置systemjs.config.js文件

A、在System.config的map字段中的最后一行输入以下字段:

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

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

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

3、在app.module.ts文件中,或者您有多个模块,在需要的模块中引入一下模块

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

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

@NgModule({
 imports: [
  CommonModule,
  FileUploadModule
 ]
}

4、在自定义的上传组件中使用ng2-file-upload

import {Component, OnInit} from "@angular/core";
// A: 引入FileUpload模块
import {FileUploader} from "ng2-file-upload";
@Component({
 selector: "my-file",
 templateUrl: "./app/file.html"
})
export class HomeFileComponent implements OnInit {
 // B: 初始化定义uploader变量,用来配置input中的uploader属性
 public uploader:FileUploader = new FileUploader({
  url: "http://localhost:3000/ng2/uploadFile",
  method: "POST",
  itemAlias: "uploadedfile"
 });
 // C: 定义事件,选择文件
 selectedFileOnChanged(event:any) {
  // 打印文件选择名称
  console.log(event.target.value);
 }
 // D: 定义事件,上传文件
 uploadFile() {
  // 上传
  this.uploader.queue[0].onSuccess = function (response, status, headers) {
   // 上传文件成功
   if (status == 200) {
    // 上传文件后获取服务器返回的数据
    let tempRes = JSON.parse(response);
   } else {
    // 上传文件后获取服务器返回的数据错误
    alert("");
   }
  };
  this.uploader.queue[0].upload(); // 开始上传
 }
}

5、对应的html内容

<input type="file" ng2FileSelect [uploader]="uploader" (change)="selectedFileOnChanged($event)" />
selectedFileOnChanged($event)在 .ts文件中定义

selectedFileOnChanged(event: any) {
 console.log(event.target.value);
}

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

<input type="file" ng2FileSelect [uploader]="uploader" (change)="selectedFileOnChanged($event)" multiple />

6、拖拽上传文件

支持多文件拖拽上传

<div class="beforeDrop" ng2FileDrop [ngClass]="{dropping: isDropZoneOver}" (fileOver)="fileOverBase($event)" (onFileDrop)="fileDropOver($event)" [uploader]="uploader"><div>

在对应的 .ts文件中定义拖拽函数

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

7、文件上传

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

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

详细介绍FileUpload

**初始化配置表**

参数名         参数类型    是否是可选值    参数说明
allowedMimeType    Array<string>  可选值  
allowedFileType    Array<string>  可选值  允许上传的文件类型
autoUpload       boolean     可选值  是否自动上传
isHTML5        boolean     可选值  是否是HTML5
filters        Array      可选值  
headers        Array<Headers> 可选值  上传文件的请求头参数
method         string     可选值  上传文件的方式
authToken       string     可选值  auth验证的token
maxFileSize      number     可选值  最大可上传文件的大小
queueLimit       number     可选值  
removeAfterUpload   boolean     可选值  是否在上传完成后从队列中移除
url          string     可选值  上传地址
disableMultipart    boolean     可选值  
itemAlias       string     可选值  文件标记/别名
authTokenHeader    string     可选值  auth验证token的请求头

参考网站: https://valor-software.com/ng2-file-upload/

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery 弹出层插件实现代码
Oct 24 Javascript
让jQuery与其他JavaScript库并存避免冲突的方法
Dec 23 Javascript
做web开发 先学JavaScript
Dec 12 Javascript
JS实现图片产生波纹一样flash效果的方法
Feb 27 Javascript
利用jQuery来动态为属性添加或者删除属性的简单方法
Dec 02 Javascript
使用jQuery的load方法设计动态加载及解决被加载页面js失效问题
Mar 01 Javascript
快速处理vue渲染前的显示问题
Mar 05 Javascript
微信小程序methods中定义的方法互相调用的实例代码
Aug 07 Javascript
vue中接口域名配置为全局变量的实现方法
Sep 20 Javascript
JavaScript寄生组合式继承原理与用法分析
Jan 11 Javascript
vue视频播放插件vue-video-player的具体使用方法
Nov 08 Javascript
给原生html中添加水印遮罩层的实现示例
Apr 02 Javascript
Angular angular-file-upload文件上传的示例代码
Aug 23 #Javascript
JS实现的简单分页功能示例
Aug 23 #Javascript
JavaScript实用代码小技巧
Aug 23 #Javascript
jQuery实现鼠标移到某个对象时弹出显示层功能
Aug 23 #jQuery
使用JS实现导航切换时高亮显示的示例讲解
Aug 22 #Javascript
Vue 菜单栏点击切换单个class(高亮)的方法
Aug 22 #Javascript
Vue.js点击切换按钮改变内容的实例讲解
Aug 22 #Javascript
You might like
php 文件状态缓存带来的问题
2008/12/14 PHP
CodeIgniter图像处理类的深入解析
2013/06/17 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十六)
2014/06/30 PHP
php文件上传简单实现方法
2015/01/24 PHP
PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
2015/12/25 PHP
php代码架构的八点注意事项
2016/01/25 PHP
php批量删除操作(数据访问)
2017/05/23 PHP
用js实现控制内容的向上向下滚动效果
2007/06/26 Javascript
广告切换效果(缓动切换)
2009/05/27 Javascript
javascript将数组插入到另一个数组中的代码
2013/01/10 Javascript
js confirm()方法的使用方法实例
2013/07/13 Javascript
基于jQuery实现的双11天猫拆红包抽奖效果
2015/12/01 Javascript
分享bootstrap学习笔记心得(组件及其属性)
2017/01/11 Javascript
用angular实现多选按钮的全选与反选实例代码
2017/05/23 Javascript
Vue中使用vee-validate表单验证的方法
2018/05/09 Javascript
基于javascript实现贪吃蛇小游戏
2019/11/25 Javascript
JavaScript 监听组合按键思路及代码实现
2020/07/28 Javascript
[01:03]PWL开团时刻DAY6——别打我
2020/11/05 DOTA
Python注释详解
2016/06/01 Python
python基础_文件操作实现全文或单行替换的方法
2017/09/04 Python
教你使用python实现微信每天给女朋友说晚安
2018/03/23 Python
Python PyCharm如何进行断点调试
2019/07/05 Python
python cv2在验证码识别中应用实例解析
2019/12/25 Python
windows支持哪个版本的python
2020/07/03 Python
python 基于卡方值分箱算法的实现示例
2020/07/17 Python
简单几步用纯CSS3实现3D翻转效果
2019/01/17 HTML / CSS
HTML5 Web 存储详解
2016/09/16 HTML / CSS
HTML5 canvas基本绘图之图形组合
2016/06/27 HTML / CSS
Tom Dixon官网:英国照明及家具设计和制造公司
2019/03/01 全球购物
精致的手工皮鞋:Shoe Embassy
2019/11/08 全球购物
int和Integer有什么区别
2013/05/25 面试题
体育活动总结范文
2014/05/04 职场文书
党员活动总结
2015/02/04 职场文书
大学生心理健康活动总结
2015/05/08 职场文书
大学组织委员竞选稿
2015/11/21 职场文书
搞笑婚礼主持词开场白
2015/11/24 职场文书