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. 预览结果;

  1. 未上传状态

  2. 选择本地文件

  3. 文件上传






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 文件上传、下载的更多相关文章

  1. Struts的文件上传下载

    Struts的文件上传下载 1.文件上传 Struts2的文件上传也是使用fileUpload的组件,这个组默认是集合在框架里面的.且是使用拦截器:<interceptor name=" ...

  2. Android okHttp网络请求之文件上传下载

    前言: 前面介绍了基于okHttp的get.post基本使用(http://www.cnblogs.com/whoislcj/p/5526431.html),今天来实现一下基于okHttp的文件上传. ...

  3. Selenium2学习-039-WebUI自动化实战实例-文件上传下载

    通常在 WebUI 自动化测试过程中必然会涉及到文件上传的自动化测试需求,而开发在进行相应的技术实现是不同的,粗略可划分为两类:input标签类(类型为file)和非input标签类(例如:div.a ...

  4. 艺萌文件上传下载及自动更新系统(基于networkComms开源TCP通信框架)

    1.艺萌文件上传下载及自动更新系统,基于Winform技术,采用CS架构,开发工具为vs2010,.net2.0版本(可以很容易升级为3.5和4.0版本)开发语言c#. 本系统主要帮助客户学习基于TC ...

  5. 艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输)(一)

    艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输) 该系统基于开源的networkComms通讯框架,此通讯框架以前是收费的,目前已经免费并开元,作者是英国的,开发时间5年多,框架很稳定. 项 ...

  6. ssh框架文件上传下载

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. SpringMVC——返回JSON数据&&文件上传下载

    --------------------------------------------返回JSON数据------------------------------------------------ ...

  8. 【FTP】FTP文件上传下载-支持断点续传

    Jar包:apache的commons-net包: 支持断点续传 支持进度监控(有时出不来,搞不清原因) 相关知识点 编码格式: UTF-8等; 文件类型: 包括[BINARY_FILE_TYPE(常 ...

  9. NetworkComms 文件上传下载和客户端自动升级(非开源)

    演示程序下载地址:http://pan.baidu.com/s/1geVfmcr 淘宝地址:https://shop183793329.taobao.com 联系QQ号:3201175853 许可:购 ...

  10. SpringMVC文件上传下载

    在Spring MVC的基础框架搭建起来后,我们测试了spring mvc中的返回值类型,如果你还没有搭建好springmvc的架构请参考博文->http://www.cnblogs.com/q ...

随机推荐

  1. Github资源下载

    自己收集的一些日常使用软件.编程书籍以及自己动手实践的程序,欢迎下载. 收集维护不易,喜欢请Star或Fork支持呀,(^-^)V. 所有资源均自己制作或收集自网络,如有侵权请联系删除. 友情链接 G ...

  2. Jedis操作Redis--String类型

    /** * String(字符串) * APPEND,BITCOUNT,BITOP,BITFIELD,DECR,DECRBY,GET,GETBIT,GETRANGE,GETSET,INCR,INCRB ...

  3. 问题.spring源码转换为eclipse遇到的问题

    1.下载spring源码 2.下载安装gradle,配置环境变量 3.在spring子项目下执行命令:gradle cleanidea eclipse,会生成对应的.project及.classpat ...

  4. CodeForces - 632E Thief in a Shop 完全背包

    632E:http://codeforces.com/problemset/problem/632/E 参考:https://blog.csdn.net/qq_21057881/article/det ...

  5. CodeForces 988 F Rain and Umbrellas

    Rain and Umbrellas 题意:某同学从x=0的点走到x=a的点,路上有几段路程是下雨的, 如果他需要经过这几段下雨的路程, 需要手上有伞, 每一把伞有一个重量, 求走到重点重量×路程的最 ...

  6. github初学者搭建自己的网站

    如何利用github打造博客专属域名 感谢园友的无私共享-- http://www.cnblogs.com/xuehaoyue/p/6551217.html 选分支 建立好库,在设置 这里选择博客类型 ...

  7. 单细胞转录组测序数据的可变剪接(alternative splicing)分析方法总结

    可变剪接(alternative splicing),在真核生物中是一种非常基本的生物学事件.即基因转录后,先产生初始RNA或称作RNA前体,然后再通过可变剪接方式,选择性的把不同的外显子进行重连,从 ...

  8. 【Nginx】简介以及安装、启动、关闭

    一.概述 二.Nginx基本安装 2.1 Windows安装Nginx Nginx目录结构 2.2 Linux安装Nginx 2.3 Mac利用homebrew安装 三.nginx启动关闭 3.1 重 ...

  9. Python中字符编码及转码

    python 字符编码及转码 python 默认编码 python 2.X 默认的字符编码是ASCII, 默认的文件编码也是ASCII python 3.X 默认的字符编码是unicode,默认的文件 ...

  10. 基于soot的java方法名生成报告

    0.生成XML格式文件 笔者使用soot将java文件解析生成xml格式文档,具体操作流程不再赘述.本文讨论执行结果的用途.笔者第一次采用的java文件如下:文件名为test.java 用soot解析 ...