JS中使用base64编码上传下载文件
下载文件:使用FileSaver.js https://github.com/eligrey/FileSaver.js/blob/master/README.md
手机端UC浏览器无法下载 安卓火狐浏览器可上传、下载
import * as fileSave from 'file-saver';
download(spath: string, swjm: string) {
this.tableService.getwjnrws(spath).subscribe(data => {
const content = data.swjnr;
if (content) {
console.log('下载' + content);
const index = swjm.lastIndexOf('.');
const fileType = swjm.substring(index);
const mime = {
...... // MIME 参考手册: http://www.w3school.com.cn/media/media_mimeref.asp
'.zip': 'application/zip',
'.json': 'application/json'
}; if (fileType in mime) { const myFile = this.createFile(content, mime[fileType]); // const file = new File([myFile], swjm, { type: mime[fileType] }); fileSave.saveAs(myFile, swjm); } }
}); } createFile(data, type) {
const bytes = window.atob(data);
let n = bytes.length;
const u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bytes.charCodeAt(n); // 返回在指定的位置的字符的 Unicode 编码
}
return new Blob([u8arr], { type: type });
}
上传文件:
upload(files: FileList, service: HiswsService) {
function getDateStr(d:Date){
......//格式化日期代码省略……
return `${year}/${mouthStr}/${dayStr} ${hourStr}:${minuteStr}:${secondStr}`;
}
if (files.length) {
const file = files[0];
// const fileType = file.type;
const reader = new FileReader(); // new一个FileReader实例
reader.onload = function (e) {
const t: any = e.target;
console.log('上传:' + t.result);
let wjnr = '';
const d = t.result.split('base64,')[1];
if (d) {
wjnr = d;
} else {
wjnr = t.result;
}
const today = new Date();
const sygid = sessionStorage.getItem('currentUser');
const data = new FileBean('', file.name, '', `${file.size}`, '1', file.name, getDateStr(today), wjnr, sygid);
service.wjsave(data).subscribe(
s => {
console.log('wjsave:' + s);
if (s.state) {
alert('上传文件成功!');
} else {
alert('上传失败:' + s.errorMsg);
}
}
);
};
reader.readAsDataURL(file); // 返回一个基于Base64编码的data-uri对象
}
}
service所做的事情就是发get 或 post请求给后端
return this.http.post<SaveOutputBean>(surl, fileBean, httpOptions) //上传 return this.http.get<FileContent>(lurl) //下载
JS中使用base64编码上传下载文件的更多相关文章
- tomcat文件夹没有部署项目和Tomcat中webapps中没有运行项目-上传下载文件和图片
1.eclipse不像MyEclipse默认将项目部署到tomcat安装目录下的webapps中,而默认部署到工作目录下的.metadata.plugins\org.eclipse.wst.serve ...
- 在windows中使用PuTTy上传下载文件和目录
打开windows的cmd,使用cd命令切换到PuTTy安装目录 C:\Users\NUC>cd C:\Program Files\PuTTY 在cmd中使用pscp命令上传下载文件 windo ...
- python实现socket上传下载文件-进度条显示
在python的socket编程中,可以实现上传下载文件,并且在下载的时候,显示进度条,具体的流程如下图所示: 1. 服务器端代码如下: [root@python 519]# cat server.p ...
- 文件上传三:base64编码上传
介绍三种上传方式: 文件上传一:伪刷新上传 文件上传二:FormData上传 文件上传三:base64编码上传 Flash的方式也玩过,现在不推荐用了. 优点: 1.浏览器可以马上展示图像,不需要先上 ...
- C#实现http协议支持上传下载文件的GET、POST请求
C#实现http协议支持上传下载文件的GET.POST请求using System; using System.Collections.Generic; using System.Text; usin ...
- SecureCRT、Xmanager对Linux上传下载文件或文件夹
(1).SecureCRT SecureCRT对Linux上传下载文件或文件夹拥有一个专门的软件SecureFXPortable.对于它来说只有两个的难题,一个是版本问题,尽量去官网下载最近版本:另一 ...
- WebSSH画龙点睛之lrzsz上传下载文件
本篇文章没有太多的源码,主要讲一下实现思路和技术原理 当使用Xshell或者SecureCRT终端工具时,我的所有文件传输工作都是通过lrzsz来完成的,主要是因为其简单方便,不需要额外打开sftp之 ...
- rz和sz上传下载文件工具lrzsz
######################### rz和sz上传下载文件工具lrzsz ####################################################### ...
- linux上很方便的上传下载文件工具rz和sz
linux上很方便的上传下载文件工具rz和sz(本文适合linux入门的朋友) ##########################################################&l ...
随机推荐
- Java泛型用法总结
普通泛型 class Point< T>{ // 此处可以随便写标识符号,T是type的简称 private T var ; // var的类型由T指定,即:由外部指定 public T ...
- bootstrap selectpicker控件select下拉框动态数据无法回显的问题
有关于selectpicker下拉框数据回显的问题,当查看一个对象的属性的时候, 发现有关于selectpicker的下拉框并没有将返回的数据进行回显,显示的都是请选择, 经查证,当查看属性的时候,他 ...
- sklearn标准化-【老鱼学sklearn】
在前面的一篇博文中关于计算房价中我们也大致提到了标准化的概念,也就是比如对于影响房价的参数中有面积和户型,面积的取值范围可以很广,它可以从0-500平米,而户型一般也就1-5. 标准化就是要把这两种参 ...
- Linux 包管理
1 文集 <Linux 包管理基础:apt.yum.dnf 和 pkg>,由Snapcrafter翻译,英文原创(作者Brennen)地址在这里. 这是一篇不错的概括性的文章,系统介绍了D ...
- 手动部署 kubernetes HA 集群
前言 关于kubernetes HA集群部署的方式有很多种(这里的HA指的是master apiserver的高可用),比如通过keepalived vip漂移的方式.haproxy/nginx负载均 ...
- impala
impala 1.impala是什么: impala是基于hive的大数据实时分析查询引擎,直接使用Hive的元数据库Metadata,意味着impala元数据都存储在Hive的metastore中. ...
- DDoS攻击与防御(3)
3.攻击应用资源网络应用和服务在处理数据时,通常需要消耗一定的网络连接.计算和存储资源,这些资源是由应用程序向系统进行申请并自行管理和维护的.消耗应用资源的DDoS攻击就是通过向应用提交大量消耗资源的 ...
- Zlib:error can't decompress data; zlib not available
查看:yum list |grep zlib* 看到的是全部都安装好的: 版本为1.2.3,现在要升级为1.2.11 卸载 [root@biluos1 zlib-1.2.11]# rpm –nodep ...
- Fiddler 教程---小坦克
协议. Fiddler无论对开发人员或者测试人员来说,都是非常有用的工具 Fiddler的工作原理 Fiddler 是以代理web服务器的形式工作的,它使用代理地址:127.0.0.1, 端口:888 ...
- XVIII Open Cup named after E.V. Pankratiev. Grand Prix of Peterhof
A. City Wall 找规律. #include<stdio.h> #include<iostream> #include<string.h> #include ...