Python 前后端文件下载接口代码

    xiaoxiao2022-07-13  151

    后端使用flask编写的简单接口:

    import flask import os import sys import json from flask import request from flask import Response interface_path = os.path.dirname(__file__) sys.path.insert(0, interface_path) # 将当前文件的父目录加入临时系统变量 app = flask.Flask(__name__) def file_iterator(file_path, chunk_size=512): """ 文件读取迭代器 :param file_path:文件路径 :param chunk_size: 每次读取流大小 :return: """ with open(file_path, 'rb') as target_file: while True: chunk = target_file.read(chunk_size) if chunk: yield chunk else: break def to_json(obj): """ 放置 :return: """ return json.dumps(obj, ensure_ascii=False) # 下载 @app.route('/download', methods=['GET']) def download(): """ 文件下载 :return: """ file_path = request.values.get('filepath') if file_path is None: return to_json({'success': 0, 'message': '请输入参数'}) else: if file_path == '': return to_json({'success': 0, 'message': '请输入正确路径'}) else: if not os.path.isfile(file_path): return to_json({'success': 0, 'message': '文件路径不存在'}) else: filename = os.path.basename(file_path) response = Response(file_iterator(file_path)) response.headers['Content-Type'] = 'application/octet-stream' response.headers["Content-Disposition"] = 'attachment;filename="{}"'.format(filename) return response if __name__ == '__main__': app.run(host='0.0.0.0', port=8000)

    这个是在本地直接启动,之后我有个文件D:/goole_download/textUInt8Array.txt是事实存在的,这个做测试是,需要修改自己的文件名

    前端代码:

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="http://code.jquery.com/jquery-1.10.2.js"></script> </head> <body> <button type="button" id="btn1">下载一个zip(方法1)</button> <form action="http://localhost:8000/download" method="get"> <input type="text" name="filepath"/> <input type="submit" value="提交"> </form> </body> <script type="text/javascript"> var $eleBtn1 = $("#btn1"); var $eleBtn2 = $("#btn2"); //已知一个下载文件的后端接口: https://codeload.github.com/douban/douban-client/legacy.zip/master //方法一:window.open() $eleBtn1.click(function(){ var url = 'http://localhost:8000/download?filepath=D:/goole_download/textUInt8Array.txt' window.open(url); }); </script> </html>

    直接运行即可。想了解更多下载可参考:

    https://blog.csdn.net/sinat_29774479/article/details/78404794

    https://blog.csdn.net/bingpong/article/details/80572664

    https://hamupp.github.io/gitblog/app/jsBasic/jsButtonDownloadFile/index.html

    http://danml.com/download.html#Parameters

    最新回复(0)