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

1. 说明

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

2. 具体步骤

2.1 后端文件处理与发送

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

python 复制代码
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.zip"
	with 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 前端文件接收

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

javascript 复制代码
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);
		});
}

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

相关推荐
wuhen_n8 分钟前
JavaScript内置数据结构
开发语言·前端·javascript·数据结构
大鱼前端9 分钟前
为什么我说CSS-in-JS是前端“最佳”的糟粕设计?
前端
不爱吃糖的程序媛12 分钟前
Capacitor:跨平台Web原生应用开发利器,现已全面适配鸿蒙
前端·华为·harmonyos
AC赳赳老秦15 分钟前
2026国产算力新周期:DeepSeek实战适配英伟达H200,引领大模型训练效率跃升
大数据·前端·人工智能·算法·tidb·memcache·deepseek
CHU72903515 分钟前
淘宝扭蛋机抽盒小程序前端功能解析:解锁趣味抽盒新体验
前端·小程序
毕设源码-钟学长19 分钟前
【开题答辩全过程】以 基于Springboot的扶贫众筹平台为例,包含答辩的问题和答案
java·spring boot·后端
-凌凌漆-26 分钟前
【npm】npm的-D选项介绍
前端·npm·node.js
鹿心肺语1 小时前
前端HTML转PDF的两种主流方案深度解析
前端·javascript
程序员良许1 小时前
三极管推挽输出电路分析
后端·嵌入式
Java水解1 小时前
【JAVA 进阶】Spring AOP核心原理:JDK与CGLib动态代理实战解析
后端·spring