下载文件:使用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编码上传下载文件的更多相关文章

  1. tomcat文件夹没有部署项目和Tomcat中webapps中没有运行项目-上传下载文件和图片

    1.eclipse不像MyEclipse默认将项目部署到tomcat安装目录下的webapps中,而默认部署到工作目录下的.metadata.plugins\org.eclipse.wst.serve ...

  2. 在windows中使用PuTTy上传下载文件和目录

    打开windows的cmd,使用cd命令切换到PuTTy安装目录 C:\Users\NUC>cd C:\Program Files\PuTTY 在cmd中使用pscp命令上传下载文件 windo ...

  3. python实现socket上传下载文件-进度条显示

    在python的socket编程中,可以实现上传下载文件,并且在下载的时候,显示进度条,具体的流程如下图所示: 1. 服务器端代码如下: [root@python 519]# cat server.p ...

  4. 文件上传三:base64编码上传

    介绍三种上传方式: 文件上传一:伪刷新上传 文件上传二:FormData上传 文件上传三:base64编码上传 Flash的方式也玩过,现在不推荐用了. 优点: 1.浏览器可以马上展示图像,不需要先上 ...

  5. C#实现http协议支持上传下载文件的GET、POST请求

    C#实现http协议支持上传下载文件的GET.POST请求using System; using System.Collections.Generic; using System.Text; usin ...

  6. SecureCRT、Xmanager对Linux上传下载文件或文件夹

    (1).SecureCRT SecureCRT对Linux上传下载文件或文件夹拥有一个专门的软件SecureFXPortable.对于它来说只有两个的难题,一个是版本问题,尽量去官网下载最近版本:另一 ...

  7. WebSSH画龙点睛之lrzsz上传下载文件

    本篇文章没有太多的源码,主要讲一下实现思路和技术原理 当使用Xshell或者SecureCRT终端工具时,我的所有文件传输工作都是通过lrzsz来完成的,主要是因为其简单方便,不需要额外打开sftp之 ...

  8. rz和sz上传下载文件工具lrzsz

    ######################### rz和sz上传下载文件工具lrzsz ####################################################### ...

  9. linux上很方便的上传下载文件工具rz和sz

    linux上很方便的上传下载文件工具rz和sz(本文适合linux入门的朋友) ##########################################################&l ...

随机推荐

  1. tensorflow添加层-【老鱼学tensorflow】

    本节主要定义个添加层的函数,在深度学习中是通过创建多层神经网络来实现的,因此添加层的函数会被经常用到: import tensorflow as tf def add_layer(inputs, in ...

  2. react-native清除android项目缓存的命令

    cd到android目录下执行: ./gradlew clean

  3. PyCharm使用秘籍

    PyCharm的基本使用 在PyCharm下为你的Python项目配置Python解释器 Project:当前项目名>Project Interpreter>add Local 在PyCh ...

  4. Spark环境搭建(一)-----------HDFS分布式文件系统搭建

    下载的压缩文件放在~/software/    解压安装在~/app/ 一:分布式文件系统搭建HDFS 1,下载Hadoop HDFS环境搭建    使用版本:hadoop-2.6.0-cdh5.7. ...

  5. (Android UI)Android应用程序中资源:图片、字符串、颜色、布局等

    Android系统设计采用代码和布局分离的设计模式,因此在设计Android应用程序时需要遵循该设计模式. “把非代码资源(如图片和字符串常量)和代码分离开来始终是一种很好的做法.”---<An ...

  6. return的作用

    (1)终止函数的执行. (2)返回到调用的地方. (3)返回值.

  7. jmeter基本组成原件介绍

    jmeter基本组成原件介绍 参考地址:https://wenku.baidu.com/view/d4986ca2aaea998fcc220ec1.html 从性能工具的原理划分: Jmeter工具和 ...

  8. NOIP-Cantor表

    题目描述 现代数学的著名证明之一是Georg Cantor证明了有理数是可枚举的.他是用下面这一张表来证明这一命题的: 我们以Z字形给上表的每一项编号.第一项是1/1,然后是1/2,2/1,3/1,2 ...

  9. jdk的安装过程

    一.安装软件 jdk的安装:现在已经更新到11版本,这里下载的是8版本的(官网也只支持8和11的下载) 1.下载jdk网址:https://www.oracle.com/technetwork/jav ...

  10. LCA(包含RMQ)

    今天看了RMQ问题 ST的实质是动归 于是我来回顾一下LCA(的各种写法) 因为每次考试发现自己连LCA都写不好 费时 First of all, RMQ板子: [一维] #include<bi ...