前端实现文件上传——angular版本+ant design
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的更多相关文章
- struts 多文件上传 xml 版本
[本文简介] 本文将介绍 以配置 struts.xml 的方式 实现 多文件上传的功能. [文件夹结构] [struts.xml] <?xml version="1.0" ...
- FormData使用方法详解,以及在IE9环境下,前端的文件上传问题
FormData的主要用途有两个: 1.将form表单元素的name与value进行组合,实现表单数据的序列化,从而减少表单元素的拼接,提高工作效率. 2.异步上传文件 一.创建formData对象 ...
- tornado结合前端进行文件上传
在表单中我们获取用户提交的数据,使用的是get_argument,复选框使用的是get_arguments,但是文件的不一样,文件的使用request.files. form文件上传 html代码: ...
- 前端异步文件上传组件 Uploader
Uploader是非常强大的异步文件上传组件,支持ajax.iframe.flash三套方案,实现浏览器的全兼容,调用非常简单,内置多套主题支持 和常用插件,比如验证.图片预览.进度条等,广泛应用于淘 ...
- web前端之文件上传
前言 最近太忙一直没时间认真的写博客(哈哈哈),最近pm提一个需求,移动端需要一个上传图片的功能,允许多选.删除.预览.点击查看大图并可以滑动.虽然听起来很多,但是这个功能在web上实现过啊,使用we ...
- 前端/C# 前后台交互文件上传、下载
试了很多方式,最终确认这个全面简单版的.废话不多说,贴码. 文件上传 input的type命名为file,即可实现文件上传.嗯~~~现在html还是很强大的.Good! 前端 单个文件上传 Html: ...
- web文件上传下载组件
最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现. 在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表 ...
- java大文件上传解决方案
最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现. 在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表 ...
- Web大文件上传断点续传解决方案
最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现. 在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表 ...
- B/S超大文件上传与下载
最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现. 在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表 ...
随机推荐
- 小程序Day01
注册一个微信小程序账号测试号不能用云开发 构建npm(下载node.js) npm i @vant/weapp -S --production if wrong npm init//npm intal ...
- Cesium测量优化1
简介:优化绘制点.线,面鼠标位置获取精度.支持3dties,gltf model,以及box等Geometry Entity上的位置拾取. 测试代码 <template> <div ...
- CAD动态输入框不见了怎么办?教你三个调出方法,轻松搞定!
CAD动态输入是除了命令行以外又一种友好的人机交互方式,在CAD设计过程中,启用CAD动态输入功能,可以直接在光标附近显示信息.输入值等.可当CAD动态输入框不见了的时候,该怎么办呢?本文小编以浩辰C ...
- Pods与Nodes
Pod是Kubernetes抽象出来表示一组应用容器(比如Docker.rkt),还有这些容器共享的资源.这些资源包括: 共享存储,比如Volumes 网络,比如独立的集群IP地址 如何去运行每个容器 ...
- Installation requirements for DB2 UDB 8.1 Enterprise Servers
UDB 8 Install HomeUppre-UDB 8 InstallUDB 8 Install Addendum Steps to do before/after applying a DB ...
- FastReport 单元行自动换行 Table Object AutoSize
FastReport 官方实例138.fr3 有关于单元行自动换行的描述.The table object can grow depends on cells content. Notes:- set ...
- HTML图片上传实时预览js
<style>*{margin:0; padding:0;}form{background:#F1F1F1;}.bbg{background:url(../images/add_ico.j ...
- K8s高可用集群部署(四)
k8s官网高可用部署参考:https://kubernetes.io/docs/setup/independent/high-availability/ 目录 一 ,k ...
- 2022.11.15 NOIP2022 模拟赛十
炸弹威力 Source:洛谷 P6036. 记 \(f_{i,0/1}\) 表示第 \(i\) 个位置为 \(0/1\) 的答案个数,有 DP 转移: \[\begin{aligned} (1-p_i ...
- Day 22 22.1:增量式爬虫
Day 22 22.1:增量式爬虫 爬虫应用场景分类 通用爬虫 聚焦爬虫 功能爬虫 分布式爬虫 增量式爬虫: 用来监测网站数据更新的情况(爬取网站最新更新出来的数据). 只是一种程序设计的思路,使用什 ...