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学习笔记 nt-child的使用
Jan 17 Javascript
javascrpt绑定事件之匿名函数无法解除绑定问题
Dec 06 Javascript
div模拟滚动条效果示例代码
Oct 16 Javascript
Spring mvc 接收json对象
Dec 10 Javascript
12 款 JS 代码测试必备工具(翻译)
Dec 13 Javascript
详解PHP中pathinfo()函数导致的安全问题
Jan 05 Javascript
jQuery实用密码强度检测
Mar 02 Javascript
angularJs的ng-class切换class
Jun 23 Javascript
浅谈Koa服务限流方法实践
Oct 23 Javascript
vue使用 better-scroll的参数和方法详解
Jan 25 Javascript
vue cli3 调用百度翻译API翻译页面的实现示例
Sep 13 Javascript
Vue学习之axios的使用方法实例分析
Jan 06 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执行速度全攻略
2006/10/09 PHP
PHP安全技术之 实现php基本安全
2010/09/04 PHP
PHP学习之字符串比较和查找
2011/04/17 PHP
学习php设计模式 php实现原型模式(prototype)
2015/12/07 PHP
Laravel5中Cookie的使用详解
2017/05/03 PHP
thinkPHP5项目中实现QQ第三方登录功能
2017/10/20 PHP
JS模板实现方法
2013/04/03 Javascript
一个不错的js html页面倒计时可精确到秒
2014/10/22 Javascript
IE6兼容透明背景图片及解决方案
2015/08/19 Javascript
javascript引用类型之时间Date和数组Array
2015/08/27 Javascript
论JavaScript模块化编程
2016/03/07 Javascript
js在ie下打开对话窗口的方法小结
2016/10/24 Javascript
从零开始学习Node.js系列教程三:图片上传和显示方法示例
2017/04/13 Javascript
JQuery 选择器、DOM节点操作练习实例
2017/09/28 jQuery
浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验
2018/12/20 Javascript
vue+egg+jwt实现登录验证的示例代码
2019/05/18 Javascript
vue.js实现三级菜单效果
2019/10/19 Javascript
微信公众号H5之微信分享常见错误和问题(小结)
2019/11/14 Javascript
Vue 3.0 全家桶抢先体验
2020/04/28 Javascript
在antd Table中插入可编辑的单元格实例
2020/10/28 Javascript
[01:51]2018年度CS GO最具人气外援-完美盛典
2018/12/16 DOTA
跟老齐学Python之让人欢喜让人忧的迭代
2014/10/02 Python
Python构建图像分类识别器的方法
2019/01/12 Python
python采集百度搜索结果带有特定URL的链接代码实例
2019/08/30 Python
Python 爬虫性能相关总结
2020/08/03 Python
Python中过滤字符串列表的方法
2020/12/22 Python
jupyter 添加不同内核的操作
2021/02/06 Python
英国高级健康和美容产品零售商:Life and Looks
2019/08/01 全球购物
WINDOWS域的具体实现方式是什么
2014/02/20 面试题
C#里面可以避免一个类被其他类继承么?如何?
2013/09/26 面试题
大学生求职信范文应怎么写
2014/01/01 职场文书
2014年社区重阳节活动策划方案
2014/09/16 职场文书
初中英语教师个人工作总结
2015/02/09 职场文书
单方投资意向书
2015/05/11 职场文书
JDBC连接的六步实例代码(与mysql连接)
2021/05/12 MySQL
python关于集合的知识案例详解
2021/05/30 Python