美文网首页
Python 前后端文件下载接口代码

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

作者: 一秆子数码 | 来源:发表于2019-05-23 19:24 被阅读0次

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

    相关文章

      网友评论

          本文标题:Python 前后端文件下载接口代码

          本文链接:https://www.haomeiwen.com/subject/gjtizqtx.html