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 ...
随机推荐
- Github资源下载
自己收集的一些日常使用软件.编程书籍以及自己动手实践的程序,欢迎下载. 收集维护不易,喜欢请Star或Fork支持呀,(^-^)V. 所有资源均自己制作或收集自网络,如有侵权请联系删除. 友情链接 G ...
- Jedis操作Redis--String类型
/** * String(字符串) * APPEND,BITCOUNT,BITOP,BITFIELD,DECR,DECRBY,GET,GETBIT,GETRANGE,GETSET,INCR,INCRB ...
- 问题.spring源码转换为eclipse遇到的问题
1.下载spring源码 2.下载安装gradle,配置环境变量 3.在spring子项目下执行命令:gradle cleanidea eclipse,会生成对应的.project及.classpat ...
- CodeForces - 632E Thief in a Shop 完全背包
632E:http://codeforces.com/problemset/problem/632/E 参考:https://blog.csdn.net/qq_21057881/article/det ...
- CodeForces 988 F Rain and Umbrellas
Rain and Umbrellas 题意:某同学从x=0的点走到x=a的点,路上有几段路程是下雨的, 如果他需要经过这几段下雨的路程, 需要手上有伞, 每一把伞有一个重量, 求走到重点重量×路程的最 ...
- github初学者搭建自己的网站
如何利用github打造博客专属域名 感谢园友的无私共享-- http://www.cnblogs.com/xuehaoyue/p/6551217.html 选分支 建立好库,在设置 这里选择博客类型 ...
- 单细胞转录组测序数据的可变剪接(alternative splicing)分析方法总结
可变剪接(alternative splicing),在真核生物中是一种非常基本的生物学事件.即基因转录后,先产生初始RNA或称作RNA前体,然后再通过可变剪接方式,选择性的把不同的外显子进行重连,从 ...
- 【Nginx】简介以及安装、启动、关闭
一.概述 二.Nginx基本安装 2.1 Windows安装Nginx Nginx目录结构 2.2 Linux安装Nginx 2.3 Mac利用homebrew安装 三.nginx启动关闭 3.1 重 ...
- Python中字符编码及转码
python 字符编码及转码 python 默认编码 python 2.X 默认的字符编码是ASCII, 默认的文件编码也是ASCII python 3.X 默认的字符编码是unicode,默认的文件 ...
- 基于soot的java方法名生成报告
0.生成XML格式文件 笔者使用soot将java文件解析生成xml格式文档,具体操作流程不再赘述.本文讨论执行结果的用途.笔者第一次采用的java文件如下:文件名为test.java 用soot解析 ...