flask实现下载文件、前后端

采用前后端分离的过程中,前端只能下载静态文件中的文件或者url下载文件。但是,一般情况下文件要么是远程或者存在于其他文件夹。这种情况就需要采用后端预先下载文件,传递给前端。

flask有几种文件传输方式,比如send_file、send_file_dictionary或者下面这种方式。这几种方式返回的数据不能被二次格式化,只能原样返回。

flask后台

link 是文件路径或者链接
temp_path是下载的文件临时路径

 urllib.urlretrieve(
                link,temp_path, urlcallback)
            # # content = send_file(temp_path , as_attachment=True)
            # return True,  make_response(send_from_directory(base_path, tool_name, as_attachment=True))

            raw_bytes = ""
            with open(temp_path, 'rb') as r:
                for line in r:
                    raw_bytes = raw_bytes + line
            response = make_response(raw_bytes)
            response.headers['Content-Type'] = "application/octet-stream"
            response.headers['Content-Disposition'] = "inline; filename=" + tool_name
            print response
 def urlcallback(a, b, c):
    """
        call back function
        a,已下载的数据块
        b,数据块的大小
        c,远程文件的大小
    """
    prec = 100.0 * a * b / c
    if 100 < prec:
        prec = 100
    cls.g_logger.info("%.2f%%" % (prec,))

前端

let content = response.request.response;
let name = row.tool_name;

 let url = window.URL.createObjectURL(new Blob([content])); //处理文档流
 console.log(url);
 // let fileTye = url.match(/.+\/(.+)$/)[1];
 let link = document.createElement("a");
 link.style.display = "none";
 link.href = url;
 link.download = name;
 document.body.appendChild(link);
 link.click();
 document.body.removeChild(link);
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue、PythonFlask是一种常见的前后端分离项目的技术组合。 Vue是一种流行的前端框架,可用于构建单页面应用程序。它使用了MVVM(模型-视图-视图模型)的架构模式,具有响应式数据绑定和组件化开发等优点。通过Vue,我们可以快速构建交互式用户界面,并负责处理页面的视图层逻辑。 Python是一种易学易用且功能强大的编程语言,具有广泛的应用领域。在前后端分离项目中,Python通常用于处理后端的业务逻辑和数据操作。它可以通过Flask框架轻松构建RESTful API,并处理与前端之间的数据交互。 Flask是一个轻量级的Python Web框架,用于构建简单而灵活的Web应用程序。它提供了许多有用的功能,如路由、模板引擎、数据库集成等。通过Flask,我们可以轻松管理后端的路由和视图,以及与数据库的交互。 实现Vue、PythonFlask前后端分离项目的基本流程如下: 1. 前端开发:使用Vue构建用户界面,处理用户的输入和交互,并向后端发送请求。前端开发人员将使用HTML、CSS和JavaScript等前端技术实现页面的布局和功能。 2. 后端开发:使用PythonFlask构建后端服务器,处理前端发送的请求并返回相应的数据。后端开发人员将编写服务器端的API和业务逻辑,与数据库进行交互,并返回处理后的数据给前端。 3. 数据交互:前端通过发送HTTP请求来与后端进行数据交互。后端接收到请求后,根据需要从数据库中获取数据或进行其他操作,并将结果作为JSON格式返回给前端。 4. 部署和测试:前后端分离项目可以将前端静态文件部署到CDN或Web服务器上,将后端部署到应用服务器上。在部署之前,需要进行一系列的测试,包括单元测试、集成测试和端到端测试等。 通过将Vue、PythonFlask相结合,可以实现前后端分离项目的高效开发和可扩展性。Vue提供了强大的前端能力,PythonFlask提供了灵活的后端逻辑和数据操作能力,使得开发人员可以分工合作,实现高效的项目开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值