python flask 上传下载 api_Flask 文件下载API

给前端提供一个文件下载接口时, 遇到了文件名乱码的问题, 几经折腾总算实现效果, 代码如下:

import requests

from flask import Response, jsonify, request, stream_with_context

from flask_login import login_required

from . import bp

from .models import Courseware

@bp.route("/courseware/download")

@login_required

def courseware_download():

"""

课件下载 GET

:param id: 课件id

"""

pk = request.args.get("id", type=int)

obj = Courseware.query.get(pk)

if not obj:

return jsonify(detail=f'Courseware(id={pk}) not found.'), 404

try:

url = f"{obj.domain.rstrip('/')}/{obj.filekey}" # 七牛云文件下载地址

r = requests.get(url, stream=True, timeout=500)

response = Response(

stream_with_context(r.iter_content(chunk_size=1024)),

content_type=r.headers["content-type"],

)

header = f'attachment; filename="{quote(obj.filename.encode())}"'

response.headers["Content-Disposition"] = header

return response

except Exception as e:

print("download file error:", e)

return jsonify(detail=str(e)), 422

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/453913.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenGL实用开源代码列表

有了网络的最大好处就是可以资源共享。网络是最大的知识库,也是最好的老师,正所谓“没有你想不到的,只有你找不到的”。以下是我收集的以游戏编程,OpenGL 3D编程相关的免费扩展库资料。不断更新中,如果你有好的建义&am…

vaOJ10369 - Arctic Network

1 /*2 The first line of each test case contains 1 < S < 100, the number of satellite channels!3 注意&#xff1a;S表示一共有多少个卫星&#xff0c;那么就是有 最多有S-1个通道&#xff01; 然后将最小生成树中的后边的 S-1通道去掉就行了&#xff01; 4…

python-kafka 常用 api 汇总

简介 python连接kafka的标准库&#xff0c;kafka-python和pykafka。kafka-python使用的人多是比较成熟的库&#xff0c;kafka-python并没有zk的支持。pykafka是Samsa的升级版本&#xff0c;使用samsa连接zookeeper&#xff0c;生产者直接连接kafka服务器列表&#xff0c;消费者…

scp选择二进制_二进制传输与文本传输区别

Ftp&#xff0c;winscp等工具下载文件时候有选项&#xff0c;可选的有二进制方式和文本方式。文本方式又称为ASCII方式两者区别如下。ASCII 方式和BINARY方式的区别是回车换行的处理&#xff0c;binary方式不对数据执行任何处理&#xff0c;ASCII 方式将回车换行转换为本机的回…

在ffmpeg中加入x264模块

引言&#xff1a;最近一直致力于多媒体应用开发&#xff0c;一说起编码解码就不得不说下FFmpeg。FFmpeg是一个集录制、转换、音/视频编码解码功能为一体的完整的开源解决方案。FFmpeg的开发是基于Linux操作系统&#xff0c;但是可以在大多数操作系统中编译和使用。下面就详细介…

RabbitMQ实例教程:发布/订阅者消息队列

消息交换机&#xff08;Exchange&#xff09; RabbitMQ消息模型的核心理念是生产者永远不会直接发送任何消息给队列&#xff0c;一般的情况生产者甚至不知道消息应该发送到哪些队列。 相反的&#xff0c;生产者只能发送消息给交换机&#xff08;Exchange&#xff09;。交换机的…

OAuth 2.0(网转)

&#xff08;一&#xff09;背景知识 OAuth 2.0很可能是下一代的“用户验证和授权”标准&#xff0c;目前在国内还没有很靠谱的技术资料。为了弘扬“开放精神”&#xff0c;让业内的人更容易理解“开放平台”相关技术&#xff0c;进而长远地促进国内开放平台领域的发展&#xf…

kafka 自动提交 和 手动提交

Consumer 需要向 Kafka 汇报自己的位移数据&#xff0c;这个汇报过程被称为提交位移&#xff08;Committing Offsets&#xff09;。因为 Consumer 能够同时消费多个分区的数据&#xff0c;所以位移的提交实际上是在分区粒度上进行的&#xff0c;即 Consumer 需要为分配给它的每…

axios vue 回调函数_vue中ajax请求与axios包完美处理

这次给大家带来vue中ajax请求与axios包完美处理&#xff0c;vue中ajax请求与axios包处理的注意事项有哪些&#xff0c;下面就是实战案例&#xff0c;一起来看一下。在vue中&#xff0c;经常会用到数据请求&#xff0c;常用的有&#xff1a;vue-resourse、axios今天我说的是axio…

用int还是用Integer?

昨天例行code review时大家有讨论到int和Integer的比较和使用。 这里做个整理&#xff0c;发表一下个人的看法。【int和Integer的区别】int是java提供的8种原始类型之一&#xff0c;java为每个原始类型提供了封装类&#xff0c;Integer是int的封装类。int默认值是0&#xff0c;…

前端之 JavaScript 常用数据类型和操作

JavaScript 常用数据类型有&#xff1a;数字、字符串、布尔、Null、Undefined、对象 JavaScript 拥有动态类型 JavaScript 拥有动态类型。这意味着相同的变量可用作不同的类型 var x; // 此时x是undefined var x 1; // 此时x是数字 var x "Alex" …

mysql备份还原(视图、存储过程)

最近在备份还原mysql的时候发现&#xff0c;视图还原报错&#xff0c;无法创建视图&#xff0c;在网上查了下资料&#xff0c;找到以下信息&#xff1a;1、如果备份的数据库含有视图,还原时需要把my.ini中的character-set改为latin1,才能够还原视图。2、还原后,需要把latin1改为…

有关javabean的说法不正确的是_关于 JavaBean, 下列叙述中不正确的是 ( ) 。_学小易找答案...

【填空题】在使用 URL 传值时传输的数据只能是 类型。【简答题】陶器是人类最伟大的发明,比四大发明更有意义,你如何认为?(手机上直接回答提交)【单选题】对于 ( ) 作用范围的 Bean, 当客户离开这个页面时 JSP 引擎取消为客户的该页 面分配的 Bean, 释放他所占的内存空间。【填…

Postgres中tuple的组装与插入

1.相关的数据类型 我们先看相关的数据类型&#xff1a; HeapTupleData(src/include/access/htup.h) typedef struct HeapTupleData {uint32 t_len; /* length of *t_data */ItemPointerData t_self; /* SelfItemPointer */Oid t_tableOid; /* ta…

Python 自动生成环境依赖包 requirements

一、生成当前 python 环境 安装的所有依赖包 1、命令 # cd 到项目路径下&#xff0c;执行以下命令 pip freeze > requirements.txt# 或者使用如下命令 pip list --formatfreeze > requirements.txt 2、常见问题 1、中使用 pip freeze > requirements.txt 命令导出…

DenyHosts 加固centos系统安全

DenyHosts是Python语言写的一个程序&#xff0c;它会分析sshd的日志文件&#xff08;/var/log/secure&#xff09;&#xff0c;当发现重 复的攻击时就会记录IP到/etc/hosts.deny文件&#xff0c;从而达到自动屏IP的功能 DenyHosts官方网站 http://denyhosts.sourceforge.net 下…

在windows xp下编译出ffmpeg.exe

找了好多资料&#xff0c;把自己的编译成功过程详细叙述&#xff0c;以避免后来者可以少浪费点时间。 1.安装MSys 到http://sourceforge.net/project/showfiles.php?group_id2435下载文件&#xff1a;   bash-3.1-MSYS-1.0.11-tar.bz2   msysCORE-1.0.11-2007.01.19-1.ta…

手机uc怎么放大页面_手机网站怎样做可以提高用户体验度?——竹晨网络

目前&#xff0c;手机已经占据了人们大多数的闲暇时间&#xff0c;互联网的流量开始逐渐向移动端倾斜&#xff0c;重视移动端的用户体验&#xff0c;就可以给客户端增加很多意想不到的功能。但是还是有很多公司和站长不知道手机网站应该怎么建才能符合用户的使用习惯。下面&…

科技申报项目总结

这个项目分为三大模块&#xff0c;管理员&#xff0c;专家以及单位模块&#xff0c;具体页面有&#xff1a;1单位信息&#xff1b;2项目申报&#xff1b;3专家信息&#xff1b;4项目评审&#xff1b;5 项目信息&#xff1b;6申报设置&#xff1b;7专家信息。 —-项目框架SSM&am…

kafka 异常:ERROR Failed to clean up log for __consumer_offsets-30 in dir /tmp/kafka-logs due to IOExce

问题概述 kafka进程不定期挂掉。ERROR Failed to clean up log for __consumer_offsets-30 in dir /tmp/kafka-logs due to IOException (kafka.server.LogDirFailureChannel)&#xff0c;报错如下 [2020-12-07 16:12:36,803] ERROR Failed to clean up log for __consumer_o…