微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

flask 在线预览二进制文本

背景

项目中要临时生成一些图片以供后续流程使用,本地没有问题,线上有点问题,需要添加一个预览的接口

知识储备

Content-disposition

https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Disposition

实现

编码

import os

from flask import Flask, Response, jsonify, url_for

app = Flask(__name__)
PORT = 5000
HOST = '127.0.0.1'
DEBUGGER = True


@app.route('/<path:filename>')
def document_preview(filename):
    response = Response(
        open(rf'files/{filename}', 'rb'))
    response.headers['Content-Type'] = '*/*'
    response.headers['Content-disposition'] = 'inline;'
    response.status = 200
    return response


@app.route('/')
def all_document():
    res = []
    for root, dirs, files in os.walk('files'):
        for file in files:
            s = url_for('document_preview', filename=file)
            res.append(f'http://{HOST}:{PORT}' + s)
    return jsonify(res)

效果

pdf及图片都是可以正常预览的,如果不能正常预览,看一下浏览器是否有自动下载插件



完结

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐