html代码

        <nz-upload *ngIf="uploadParams.parserTypeId==3 || uploadParams.parserTypeId==4" style="margin-left:10px"
[nzAction]="_uploadPath"
[nzHeaders]="{ Authorization: 'multipart/form-data' }"
[nzData]="uploadParams"
(nzChange)="handleChange($event)"
[nzBeforeUpload]="beforeFileUpload"
[nzRemove]="fileListRemove"
[nzShowUploadList]="icons"
[nzFileList]="_fileList"
>
<button nz-button>
<i nz-icon nzType="upload"></i>
上传文件
</button>
</nz-upload>

ts代码

/** 上传文件时传递的参数 */

public uploadParams: any = {};

public _uploadPath: any = parserApiPath.uploadFiles;

public _fileList: NzUploadFile[] = [];

/** 上传文件类型 /

public fileType: string = ".csv, .xlsx, .xls"; //文件类型

/
* 选择excel或者json时将表达式置灰 /

public flagExam: boolean = false;

/
* 上传的icon图标 */

icons: NzShowUploadList = {

showPreviewIcon: true,

showRemoveIcon: true,

showDownloadIcon: false

};

public handleChange(e: any): void {

//判断有没有选择上传类型

if (!this._form.value.parserType) {

console.log("请选择类型");

} else {

e.fileList.map((element: any) => {

if(element.response){

this.path.push(element.response.data);

}

});

//将上传重复的文件去重

this.path = Array.from(new Set(this.path));

  const parserOpt = this._currentParserOption;
if (!parserOpt) {
return;
}
const parserId = parserOpt.origin.id; const fieldParserOptions: FieldParserOption[] = [];
let parameter = parserOpt.origin.dataParserTemplateParameterVO[0];
for (let pa in this.path){
const opt: FieldParserOption = {
parserId: parserId,
parserTemplateParameterId: parameter.id,
value: this.path[pa],
};
fieldParserOptions.push(opt);
}
this._fieldMappingContext.setDataParserParameters(fieldParserOptions);
}

}

//上传前参数判断

beforeFileUpload = (file: any) =>

new Observable((observer: Observer) => {

const isLt100M = file.size! / 1024 / 1024 <= 100;

if (!isLt100M) {

this.modal.error({

nzTitle: "解析失败",

nzContent: "文件大小不要超过100MB!",

});

observer.complete(); return;

}

const fileType =file.name.split(".")[1]

const fileTypes =this._form.value.parserType

let isType =true

if(fileTypes="excel"){

isType = fileType === 'xlsx' || file.type === 'xls'

}else if(fileTypes="csv"){

isType = fileType === 'csv';

}else{

alert("请核对类型");

}

if (!isType) {

console.log('只支持xlsx、xls、csv类型!');

this.modal.error({

nzTitle: "解析失败",

nzContent: "请核对上传的文件类型!",

});

observer.complete();

return;

}else{

observer.next(true); observer.complete();

}

});rver.complete(); return;

}

//删除文件操作

fileListRemove = (file: any) =>

new Observable((observer: Observer) => {

let that = this;

this.modal.confirm({

nzTitle: "操作确认",

nzContent: "是否确认删除?",

nzOkText: "确定",

nzCancelText: "取消",

nzOnOk() {

//删除操作

console.log(file,"file.response.data")

// console.log(that.path,"file.response.data")

console.log(that.path,"file.response.data")

that.path.splice(that.path.findIndex((item: any) => item == file.url), 1);

that._fileList.splice(that._fileList.findIndex((item: any) => item.url == file.url), 1);

observer.next(true);

observer.complete();

},

nzOnCancel() {

observer.next(false);

observer.complete();

}

});

});

前端实现文件上传——angular版本+ant design的更多相关文章

  1. struts 多文件上传 xml 版本

    [本文简介] 本文将介绍 以配置 struts.xml  的方式 实现 多文件上传的功能. [文件夹结构] [struts.xml] <?xml version="1.0" ...

  2. FormData使用方法详解,以及在IE9环境下,前端的文件上传问题

    FormData的主要用途有两个: 1.将form表单元素的name与value进行组合,实现表单数据的序列化,从而减少表单元素的拼接,提高工作效率. 2.异步上传文件 一.创建formData对象 ...

  3. tornado结合前端进行文件上传

    在表单中我们获取用户提交的数据,使用的是get_argument,复选框使用的是get_arguments,但是文件的不一样,文件的使用request.files. form文件上传 html代码: ...

  4. 前端异步文件上传组件 Uploader

    Uploader是非常强大的异步文件上传组件,支持ajax.iframe.flash三套方案,实现浏览器的全兼容,调用非常简单,内置多套主题支持 和常用插件,比如验证.图片预览.进度条等,广泛应用于淘 ...

  5. web前端之文件上传

    前言 最近太忙一直没时间认真的写博客(哈哈哈),最近pm提一个需求,移动端需要一个上传图片的功能,允许多选.删除.预览.点击查看大图并可以滑动.虽然听起来很多,但是这个功能在web上实现过啊,使用we ...

  6. 前端/C# 前后台交互文件上传、下载

    试了很多方式,最终确认这个全面简单版的.废话不多说,贴码. 文件上传 input的type命名为file,即可实现文件上传.嗯~~~现在html还是很强大的.Good! 前端 单个文件上传 Html: ...

  7. web文件上传下载组件

    最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现. 在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表 ...

  8. java大文件上传解决方案

    最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现. 在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表 ...

  9. Web大文件上传断点续传解决方案

    最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现. 在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表 ...

  10. B/S超大文件上传与下载

    最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现. 在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表 ...

随机推荐

  1. 《ImageNet Classification with Deep Convolutional Neural Networks (AlexNet)2012》

    Abstract 作者训练了一个大型的深度卷积神经网络,用于在 ImageNet LSVRC-2010 比赛中对120万张高分辨率图像分为1000个不同的类别.在测试数据上,作者们达到了 top-1 ...

  2. reids哨兵机制

    宏观上的哨兵机制 监控:哨兵不断的检查master和slave是否正常的运行. 通知:当监控的某台Redis实例发生问题时,可以通过API通知系统管理员和其他的应用程序. 自动故障转移:如果一个mas ...

  3. Docker 数据迁移到数据盘

    systemctl stop docker 找到新的.空间较达的磁盘路径,然后创建任意目录.例如: mkdir /data/docker mv /var/lib/docker /data/docker ...

  4. Java 接口内容小结

    Java接口学习:https://www.cnblogs.com/mlllily/p/14923837.html 小结内容: 在Java9+版本中,接口内容可以有常量.抽象方法.默认方法.静态方法.私 ...

  5. 看K线学炒股(8.9)

    今天是食品饮料类题材大涨的一天,相应板块涨了6个多点,看着真是诱人.我以前关注的两只股票:海天味业和三全食品,今天都大涨.三全食品接近涨停.这种票容易选出来但也很难拿住.比如前些天买入了,结果8.5的 ...

  6. 前端项目线上部署记录 | vue-cli

    一.修改公开路径后打包;npm run build 新建一个vue.config.js文件,如果本地打开,则路径为"./',线上则'/',不加'.' module.exports = { p ...

  7. 请求/响应拦截器 给请求添加token认证

  8. vue3封装input组件

    使用了2种方法去封装input组件(.vue与.jsx) 代码如下 父组件: <template> <div> <h1>input组件封装</h1> & ...

  9. eclipse 提示错误The method of type must override a superclass method 的解决办法

    java1.5中继承接口是不需要@Override的,而在1.6以上版本中是需要添加@Override注解的,如果项目的编译器是1.5版本的就可能报错The method *** of type mu ...

  10. Lua监听事件观察者模式(多个监听者监听)

    fireEvent 产生事件,创建协程分发(在registerEventListener注册过的事件中通过事件名字找到对应的信息,然后执行对应模块的OnEvent函数),多个地方都注册了同一个事件的话 ...