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. 解决org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.xyfer.dao.UserDao.findById

    在使用Spring整合MyBatis的时候遇到控制台报错:org.apache.ibatis.binding.BindingException: Invalid bound statement (no ...

  2. PHP小补充

    code1-1 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> < ...

  3. Docker笔记(九):网络管理

    Docker的应用运行在容器中,其相互之间或与外部之间是如何通信的,涉及到哪些知识点,本文对相关内容进行整理.因网络这块牵涉的面较多,因此只从日常使用或理解的角度出发,过于专业的就不深入探讨了. 1. ...

  4. HDU 6634 网络流最小割模型 启发式合并

    如果我们先手拿完所有苹果再去考虑花费的话. S -> 摄像头 -> 苹果 -> T 就相当于找到一个最小割使得S和T分开. ans = sum - flow. 然后对于这一个模型, ...

  5. CF940A Points on the line 思维

    A. Points on the line time limit per test 1 second memory limit per test 256 megabytes input standar ...

  6. Linux下设置path

    1.直接用export命令: #export PATH=$PATH:自定义路径 查看是否已经设好,可用命令export查看: 2.修改profile文件: #vi /etc/profile 在里面加入 ...

  7. 简单粗暴详细讲解javascript实现函数柯里化

    函数柯里化(黑人问号脸)???Currying(黑人问号脸)???妥妥的中式翻译既视感:下面来一起看看究竟什么是函数柯里化: 维基百科的解释是:把接收多个参数的函数变换成接收一个单一参数(最初函数的第 ...

  8. 携程PMO--小罗说敏捷之WIP限制在制品

    转自本人运营的公众号“ 携程技术中心PMO”(ID:cso_pmo)         WIP是什么?   WIP(work in progress)指的就是工作中心在制品区.在经过部分制程之后,还没有 ...

  9. .Net基础篇_学习笔记_第六天_for循环的几个练习

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  10. Java相关PDF书籍与教程免费下载

    场景 我的CSDN: https://blog.csdn.net/BADAO_LIUMANG_QIZHI 我的博客园: https://www.cnblogs.com/badaoliumangqizh ...