zoukankan      html  css  js  c++  java
  • flask_restful实现文件下载功能

    环境:前后端完全分离,后端flask_restful,前端vue

    from flask_restful import reqparse, Resource
    from flask import send_from_directory,send_file,safe_join
    from werkzeug.utils import secure_filename
    
    class DownloadTemplates(Resource):
        def get(self):
            parser = reqparse.RequestParser(trim=True)
            parser.add_argument('filename', required=True, nullable=False, location=['args'])
            args = parser.parse_args()
            filename = args['filename']
            path = handle_manage.template_dir
            response = send_from_directory(path, filename, as_attachment=True)
            return response
    
    
    注意:这种做法有时会报错404,提示找不到url
    genericpath.py 如果系统安装了这个组件的话:
     
    会替换系统自带的path功能,导致,path失效了。最终会找不到文件。
     
    代码只有这样简短的几句话而已。就是这个os.path.isfile会有问题。所以,放在uploaded_file中来完成这个动作,就可以了
    
    class DownloadTemplates(Resource):
        def get(self):
            parser = reqparse.RequestParser(trim=True)
            parser.add_argument('filename', required=True, nullable=False, location=['args'])
            args = parser.parse_args()
            UPLOAD_FOLDERS = handle_manage.template_dir
            filename = args['filename']
            return send_file(safe_join(UPLOAD_FOLDERS, secure_filename(filename)), as_attachment=True)

    前端

    this.currentNode.path 为文件绝对路径
    //方法一
    //response.data + '/' + download_url 是绝对地址
    window.open(response.data + '/' + download_url, '_blank');
    //方法二
    let a = document.createElement('a')
    a.href = response.data + '/' + download_url
    a.click();
  • 相关阅读:
    [題解]51nod_1515_明辨是非
    任务调度问题(贪心) hdu4864
    B站学习记:贪心与博弈
    poj1505(二分+贪心)
    温故知新:互质排列
    Radar Installation(利用数据有序化进行贪心选择)
    Wooden Sticks(贪心)
    计算a除b的第一位小数 in C++.
    龙龙的暑假贪心算法大冒险
    HDU-2037(贪心)
  • 原文地址:https://www.cnblogs.com/cherylgi/p/13325326.html
Copyright © 2011-2022 走看看