Angular 文件上传、下载
1. 文件上传
本地可同时选择多个文件
将本地所选择的文件列出来
单个文件上传至服务器;
删除本地选择的文件
样式使用了bootstrap的样式
1. html - file.component.html
文件上传按钮
文件列表(文件名称、状态、操作 - 删除、上传)
<form class="form-horizontal" enctype="multipart/form-data">
<div class="form-group">
<label class="col-sm-2 control-label">选择文件</label>
<div class="col-sm-9">
<!-- 选择本地文件 - multiple="multiple"多选;accept=".xls,.doc,.pdf"限制条件;(change)="fileChange()"每次选择本地文件完成后触发的函数;-->
<input type="file" class="btn" multiple="multiple" (change)="fileChange()" accept=".xls,.doc,.pdf" #filesMulti style="padding-left:0; "/>
<!-- 本地文件列表 -->
<table *ngIf="fileData.length && fileData" class="table table-bordered table-striped wjccgl_table" id="file_name_contain" #fileNameContain>
<thead>
<tr>
<td>文件名</td>
<td>操作</td>
<td>状态</td>
</tr>
</thead>
<tbody>
<tr *ngFor="let item of fileData, let i = index">
<td>{{item.fileName}}</td>
<td>
<a href="javascript:;" (click)="fileDel(item.fileName)">删除</a>
</td>
<td>
<a href="javascript:;" (click)="fileUpload(item.file, i)">上传</a>
<span class="label label-default" *ngIf="item.status === '未上传'">未上传 </span>
<span class="label label-success" *ngIf="item.status === '已上传'">已上传 </span>
<span class="label label-error" *ngIf="item.status === '上传失败'">上传失败 </span>
</td>
</tr>
</tbody>
</table>
<!-- 提示信息 -->
<p class="help-block">* 目前只支持word/excel/pdf文件上传.</p>
</div>
</div></form>
2. ts - file.component.ts
记录本地文件数据方法
操作本地文件方法(删除本地文件、上传本地文件)
// 导入文件数据的模型文件
import {FileItemModel} from './file.model';
// 声明jquery,目的:在ts环境中可以使用js;
declare const $: any;
export class FileUpComponent implements {
// 定义文件数组
fileData: FileItemModel[] = [];
// 获取文件上传的inputHTML元素
@ViewChild('filesMulti') private fileMulti: ElementRef;
// 当选择本地文件后触发此方法
fileChange() {
// 获取选中的文件数组
const t_files = this.fileMulti.nativeElement.files;
const fileThis = this;
for ( let i = 0; i < t_files.length; i++) {
const fileItem: FileItemModel = new FileItemModel();
fileItem.fileName = files[i].name;
fileItem.file = files[i];
fileItem.status = '未上传';
fileThis.fileData.push(fileItem);
}
// 清空html中file的显示信息
$(this.fileMulti.nativeElement).val('');
}
// 删除选择的本地文件
fileDel(name: string) {
for (let i = 0; i < this.fileData.length; i++ ) {
if (this.fileData[i].fileName === name) {
this.fileData.splice(i, 1);
}
}
}}
// 单个文件上传
fileUpload(file, index) {
// 构造参数
const formData = new FormData();
formData.append('file', file, file.name);
// 上传至服务器
this.http.post('/file/upload', formData).subscribe((data: any) => {
if (respData.success && respData.errcode === 2000) { // 如果上传成功
// 此文件状态改为已上传
this.fileData[index].status = '已上传';
// 文件名称改为服务器返回的文件名
this.fileData[index].fileName = respData.data.fileName;
// 记录文件的ID
this.fileData[index].fileId = respData.data.fileId;
} else {
// 将此文件的文件状态改为‘上传失败’
this.fileData[index].status = '上传失败';
}
});
}
3. model - file.model.ts - 定义上传文件所需要的模型类
export class FileItemModel {
file: object;
fileId: string;
fileName: string;
status: string;
}
4. 预览结果;
未上传状态

选择本地文件

文件上传
前

后

2. 文件下载
1. html - file.component.html
<a href="javascript:;" (click)="fileDown(文件ID)">需要下载的文件名称</a>
2. ts - file.component.ts
export class FileComponent {
fileDown(fileId: string) { // 下载
window.location.href = `/file/download?fileId=${fileId}`;
}
}
Angular 文件上传、下载的更多相关文章
- Struts的文件上传下载
Struts的文件上传下载 1.文件上传 Struts2的文件上传也是使用fileUpload的组件,这个组默认是集合在框架里面的.且是使用拦截器:<interceptor name=" ...
- Android okHttp网络请求之文件上传下载
前言: 前面介绍了基于okHttp的get.post基本使用(http://www.cnblogs.com/whoislcj/p/5526431.html),今天来实现一下基于okHttp的文件上传. ...
- Selenium2学习-039-WebUI自动化实战实例-文件上传下载
通常在 WebUI 自动化测试过程中必然会涉及到文件上传的自动化测试需求,而开发在进行相应的技术实现是不同的,粗略可划分为两类:input标签类(类型为file)和非input标签类(例如:div.a ...
- 艺萌文件上传下载及自动更新系统(基于networkComms开源TCP通信框架)
1.艺萌文件上传下载及自动更新系统,基于Winform技术,采用CS架构,开发工具为vs2010,.net2.0版本(可以很容易升级为3.5和4.0版本)开发语言c#. 本系统主要帮助客户学习基于TC ...
- 艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输)(一)
艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输) 该系统基于开源的networkComms通讯框架,此通讯框架以前是收费的,目前已经免费并开元,作者是英国的,开发时间5年多,框架很稳定. 项 ...
- ssh框架文件上传下载
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- SpringMVC——返回JSON数据&&文件上传下载
--------------------------------------------返回JSON数据------------------------------------------------ ...
- 【FTP】FTP文件上传下载-支持断点续传
Jar包:apache的commons-net包: 支持断点续传 支持进度监控(有时出不来,搞不清原因) 相关知识点 编码格式: UTF-8等; 文件类型: 包括[BINARY_FILE_TYPE(常 ...
- NetworkComms 文件上传下载和客户端自动升级(非开源)
演示程序下载地址:http://pan.baidu.com/s/1geVfmcr 淘宝地址:https://shop183793329.taobao.com 联系QQ号:3201175853 许可:购 ...
- SpringMVC文件上传下载
在Spring MVC的基础框架搭建起来后,我们测试了spring mvc中的返回值类型,如果你还没有搭建好springmvc的架构请参考博文->http://www.cnblogs.com/q ...
随机推荐
- urllib爬虫模块
网络爬虫也称为网络蜘蛛.网络机器人,抓取网络的数据.其实就是用Python程序模仿人点击浏览器并访问网站,而且模仿的越逼真越好.一般爬取数据的目的主要是用来做数据分析,或者公司项目做数据测试,公司业务 ...
- javaScript 基础知识汇总(六)
1.基本类型与对象的区别 基本类型:是原始类型的中的一种值. 在JavaScript中有6中基本类型:string number boolean symbol null undefined 对 ...
- UVA-10004-Bicoloring二分图染色
题意:给一张图,判断是不是二分图: 自己一开始不知道是二分图染色,理解的是任意三点不能互相连接 可能以后遇到这样的模型,可以往二分图想: 首先怎么判定一个图是否为二分图 从其中一个定点开始,将跟它邻接 ...
- Another Version of Inversion 二维树状数组求逆序对
Another Version of Inversion 题意:只有2种走路方式,往右或者往下,求先走到一个大的数,在走到小的数的这种方式有多少.也就是说求出关于这个2维矩阵的逆序数. 题解:二维数组 ...
- 左偏树 P3377【模板】左偏树(可并堆)
题目传送门 代码: /* code by: zstu wxk time: 2019/03/01 */ #include<bits/stdc++.h> using namespace std ...
- 利用GPU训练网络时遇到的一些问题
1. OSError: [Error 12] Cannot allocate memory 解决办法: 出现这个错误时我是绝望的...因为我看了别人的解决办法,要加内存条才能解决...但是我不甘心,想 ...
- 2019icpc南昌网络赛_I_Yukino With Subinterval
题意 给定一个序列,两种操作,单点修改,询问区间\([l,r]\)值域在\([x,y]\)范围内的连续段个数. 分析 原数组为\(a\),构造一个新的数组\(b\),\(b[i]=(a[i]==a[i ...
- 【新】mybatis中大于等于小于等于的两种常用写法
mybatis中大于等于小于等于的写法 原符号 < <= > >= & ' " 替换符号 < <= > >= & &a ...
- idea控制台乱码解决方案
第一步:修改intellij idea配置文件: 找到intellij idea安装目录,bin文件夹下面idea64.exe.vmoptions和idea.exe.vmoptions这两个文件,分别 ...
- Ganglia环境搭建并监控Hadoop分布式集群
简介 Ganglia可以监控分布式集群中硬件资源的使用情况,例如CPU,内存,网络等资源.通过Ganglia可以监控Hadoop集群在运行过程中对集群资源的调度,作为简单地运维参考. 环境搭建流程 1 ...