当前位置: 首页 > news >正文

3. 前后端实现压缩包文件下载

1. 说明

在数据管理当中,批量处理某些文件,并以压缩包的形式在前端进行下载是很常见的功能,本文将简要讲述如何实现此功能,主要包括后端文件的整合与发送,前端文件的接收与下载。

2. 具体步骤

2.1 后端文件处理与发送

后端接收到文件下载的指令后,需要根据具体业务处理相关文件,比如从数据库中把相关数据读取出来并保存到文件中,后端的上传只需要文件的具体地址,这里相关文件的内容操作不再说明,只记录如何将已经处理好的文件进行上传的方法,具体操作如下代码:

from flask import Flask, request, jsonify
from flask_cors import CORS
from flask import send_file
import os
import zipfile

app = Flask(__name__)

CORS(app)

@app.route(/testDownload/, methods=[‘GET’,’POST’])
def testDownload():
	# 这里省略具体文件内容的操作,直接拿到需要下载的文件路径
	download_file_path_list = [./测试文件一.txt”,”测试文件二.txt”]
	zip_file_name = “test_files.zipwith zipfile.ZipFile(zip_file_name, ‘w’) as zipf:
		# 遍历路径列表,把指定文件写入到压缩包中
		for filePath in download_file_path_list:
			zipf.write(filePath, os.path.basename(filePath))
	# 发送压缩文件
	return send_file(zip_file_name, as_attachment=True)

if __name__ == ‘__main__’:
	app.run(host =0.0.0.0, debug = True)
2.2 前端文件接收

此处只做简单测试,前端页面的整体代码可根据项目需要自行设计,这里只给出响应方法实现,比如为一个按钮添加点击事件的处理方法,相关代码如下;

testDownLoad(){
	let download_url =/api/testDownload’;
	axios.get(download_url,{
		responseType: ‘blob’
	}).then(response => {
			let blob = new Blob([response.data], {type: ‘text/case;chalet=ute-8;});
			let url = URL.createObjectURL(blob);
			let link = document.createElement(‘a’);
			link.setAttribute(‘href’, url);
			link.setAttribute(‘download’, ‘test’+.zip’);
			document.body.appendChild(link);
			link.click();
			document.body.removeChild(link);
		});
}

结束,没啥问题应该是可以实现功能的。

http://www.dtcms.com/a/54424.html

相关文章:

  • 用R语言的XML库写一个采集图片的爬虫程序
  • 使用python进行数据分析需要安装的库
  • C++ list(双向链表)
  • [Python入门学习记录(小甲鱼)]第3章 Python基础知识
  • Python四大基本数据类型:List、Tuple、Set、Dictionary完全解析
  • 通过Docker搭个游戏——疯狂大陆(Pkland)
  • 爬虫逆向:脱壳工具Youpk的使用详解
  • 【开源免费】基于SpringBoot+Vue.JS旅游管理系统(JAVA毕业设计)
  • 树莓派3B+的初步使用
  • 数据库复习(第五版)- 第一章 绪论
  • 基于Celery+Supervisord的异步任务管理方案
  • HCIE云计算学什么?怎么学?未来职业发展如何?
  • 01 SQl注入基础步骤(数字、字符、布尔盲注、报错)
  • R2S的网络丢包率高问题小记
  • C0复习——课堂笔记<1>
  • 【C++】: STL详解 —— set和map类
  • 《MySQL三大核心日志解析:Undo Log/Redo Log/Bin Log对比与实践指南》
  • 私有云基础架构与运维(二)
  • Kylin麒麟操作系统服务部署 | NFS服务部署
  • 【音视频】ffplay常用命令
  • 【玩转正则表达式】正则表达式常用语法汇总
  • DevOps全流程
  • Redis高频面试题10个
  • 机器视觉运动控制一体机在天地盖同步跟随贴合解决方案
  • 系统架构设计师—数据库基础篇—数据库设计
  • C++编程:进阶阶段—4.1封装
  • Fork/Join 框架详解:分支合并的高性能并发编程
  • NoClassDefFoundError:UnsynchronizedByteArrayOutputStream
  • MySQL复合查询——通过案例讲解每个指令
  • MR的环形缓冲区(底层)