网站首页 > 技术文章 正文
- 在通常的上传下载中,我们一般都是直接保存文件或图片(jpg,png,pdf,doc,mp3,zip等),今天我们换一种方式进行上传下载,即将上传的文件或图片保存为base64内容,前端再利用FileSaver.js进行下载。
关于FileSaver.js
- FileSaver.js在https://github.com/eligrey/FileSaver.js/文件库里有详细的操作说明,在此不再做赘述,不同环境按不同方式进行加入使用即可。
上传
- 我使用的上传后台是java(版本为java8)。先获得上传文件的InputStream,再装InputStream转化成byte[],再用Base64.getEncoder().encodeToString(content)转化成字符串存储起来。当然存储的内容还可包括文件名,后缀等。
下载
- 前端通过条件从后台取得相应下载内容的字符串,再将字符串转换成FileSaver.js中saveAs方法可接收的Blob内容,调用FileSaver.saveAs(blob, "test.pdf")方法则会弹出下载窗口进行下载。
如上内容有表述不明或不详尽或不同解决方案的敬请互动。有想探讨其它内容的也敬请留言,前端(node, js, koa等),后台(java,架构等)。
注:
前端js字符串转Blob方法
function b64toBlob (b64String, contentType, sliceSize)
{
contentType = contentType || '';
sliceSize = sliceSize || 512;
var byteCharacters = atob(b64String);
var byteArrays = [];
for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {
var slice = byteCharacters.slice(offset, offset + sliceSize);
var byteNumbers = new Array(slice.length);
for (var i = 0; i < slice.length; i++) {
byteNumbers[i] = slice.charCodeAt(i);
}
var byteArray = new Uint8Array(byteNumbers);
byteArrays.push(byteArray)
}
return new Blob(byteArrays, {type: contentType});
}
相关引用代码:
var contentType = 'application/pdf';
var blob = b64toBlob(content, contentType);//content为后端返回的base64字符串
saveAs(blob, "barcode.pdf");
猜你喜欢
- 2025-05-22 36个工作中常用的JavaScript函数片段「值得收藏」
- 2025-05-22 JAVA实现HTTP的上传与下载
- 2025-05-22 java+上传整个文件夹的所有文件
- 2025-05-22 SPRINGBOOT 实现大文件上传下载、分片、断点续传教程
- 2025-05-22 IDM下载器:站点抓取相关设置介绍
- 2025-05-22 Pug 3.0.0正式发布,不再支持 Node.js 6/8
- 2025-05-22 还有前端不知道Electron的?手把手教你把Vue项目打包成桌面程序
- 2025-05-22 SpringBoot系列——附件管理:整合业务表单实现上传、回显、下载
- 2025-05-22 浏览器大文件(百M以上)的上传下载实现技术
- 2025-05-22 6个免费又让人直呼强大的软件
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端md5加密 (49)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- 前端接口 (46)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle约束 (46)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- mac oracle (47)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)