python 解决flask 图片在线浏览或者直接下载的问题

yipeiwu_com6年前Python基础

目前是把图片存在mongodb数据库,实现一个方法,比如 访问 /get_pic/ID 能实现图片在浏览器打开,添加了一个状态,比如?filename=1.png,实现图片直接下载,

需要在读取图片函数中,给response 加上headers:

在 flask 中

response=make_response(f.read())

需要下载就添加以下headers

当filename为中文时会报asicc编解码错误,

此时,import urllib (py3)

filename=urllib.parse.quote(filename) 用该函数进行编码,

response.headers['Content-Type'] = 'application/octet-stream'
response.headers['Content-Disposition'] = 'attachment;filename="{0}"'.format(filename)
return response

如让浏览器能缓存该图片需要添加以下设置

response.last_modified = 资源上次修改时间
response.set_etag(etag)
response.expires = 过期时间(好像只有这个就可以生效)

以上这篇python 解决flask 图片在线浏览或者直接下载的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

python函数局部变量用法实例分析

本文实例讲述了python函数局部变量用法。分享给大家供大家参考。具体分析如下: 当你在函数定义内声明变量的时候,它们与函数外具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是...

pandas factorize实现将字符串特征转化为数字特征

pandas factorize实现将字符串特征转化为数字特征

将原始数据中的字符串特征转化为模型可以识别的数字特征可是使用pandas自带的factorzie方法。 原始数据的job特征值如下 都是字符串特征,无法用于训练,当然可以单独建立map...

Python中强大的命令行库click入门教程

前言 我们的游戏资源处理工具是Python实现的,功能包括csv解析,UI材质处理,动画资源解析、批处理,Androd&iOS自动打包等功能。该项目是由其他部门继承过来的,由于绝大部分代...

python基于递归解决背包问题详解

递归是个好东西,任何具有递归性质的问题通过函数递归调用会变得很简单。一个很复杂的问题,几行代码就能搞定。   最简单的递归问题:现有重量为weight的包,有若干重量分别为W1...

python五子棋游戏的设计与实现

这个python的小案例是五子棋游戏的实现,在这个案例中,我们可以实现五子棋游戏的两个玩家在指定的位置落子,画出落子后的棋盘,并且根据函数判断出输赢的功能。 这个案例的思路如下所示: 首...