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 each()方法的使用方法
Mar 18 Javascript
jQuery实现瀑布流的取巧做法分享
Jan 12 Javascript
让JavaScript中setTimeout支持链式操作的方法
Jun 19 Javascript
jQuery检查事件是否触发的方法
Jun 26 Javascript
JavaScript修改作用域外变量的方法
Mar 25 Javascript
AJAX和jQuery动态加载数据的实现方法
Dec 05 Javascript
smartupload实现文件上传时获取表单数据(推荐)
Dec 12 Javascript
vue axios 二次封装的示例代码
Dec 08 Javascript
Angular4实现图片上传预览路径不安全的问题解决
Dec 25 Javascript
vue使用laydate时间插件的方法
Nov 14 Javascript
详解超简单的react服务器渲染(ssr)入坑指南
Feb 28 Javascript
js实现图片无缝循环轮播
Oct 28 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计划任务之验证是否有多个进程调用同一个job的方法
2015/12/07 PHP
win7安装php框架Yii的方法
2016/01/25 PHP
CI分页类首页、尾页不显示的解决方法
2016/03/28 PHP
ThinkPHP中Common/common.php文件常用函数功能分析
2016/05/20 PHP
php 生成Tab键或逗号分隔的CSV
2016/09/24 PHP
PHP利用递归函数实现无限级分类的方法
2019/03/22 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
解决AJAX中跨域访问出现'没有权限'的错误
2008/08/20 Javascript
js固定DIV高度,超出部分自动添加滚动条的简单方法
2013/07/10 Javascript
jquery显示隐藏input对象
2014/07/21 Javascript
jquery解析json格式数据的方法(对象、字符串)
2015/11/24 Javascript
JS弹出层遮罩,隐藏背景页面滚动条细节优化分析
2016/04/29 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
2016/05/04 Javascript
jQuery Mobile框架中的表单组件基础使用教程
2016/05/17 Javascript
jquery与ajax获取特殊字符实例详解
2017/01/08 Javascript
a标签置灰不可点击的实现方法
2017/02/06 Javascript
Vue2.0实现1.0的搜索过滤器功能实例代码
2017/03/20 Javascript
简单快速的实现js计算器功能
2017/08/17 Javascript
使用Angular CLI进行单元测试和E2E测试的方法
2018/03/24 Javascript
Bootstrap 时间日历插件bootstrap-datetimepicker配置与应用小结
2019/05/28 Javascript
python简易远程控制单线程版
2018/06/20 Python
python 中文件输入输出及os模块对文件系统的操作方法
2018/08/27 Python
python 实现矩阵上下/左右翻转,转置的示例
2019/01/23 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
2019/03/27 Python
python日期相关操作实例小结
2019/06/24 Python
解决TensorFlow程序无限制占用GPU的方法
2020/06/30 Python
Mio Skincare中文官网:肌肤和身体护理
2016/10/26 全球购物
存储过程和函数的区别
2013/05/28 面试题
财务与信息服务专业推荐信
2013/11/28 职场文书
《骆驼和羊》教学反思
2014/02/27 职场文书
培训班主持词
2014/03/28 职场文书
幼儿园园务工作总结2015
2015/05/18 职场文书
公司新员工欢迎词
2015/09/30 职场文书
实现一个简单得数据响应系统
2021/11/11 Javascript
星际争霸:毕姥爷vs解冻03
2022/04/01 星际争霸
介绍一下28个JS常用数组方法
2022/05/06 Javascript