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

后端使用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)

image.gif

这个是在本地直接启动,之后我有个文件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>
image.gif

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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容