即时创建的下载不是二进制文件

时间:2016-01-11 01:30:37

标签: python flask

我尝试生成一个我不知道的mime类型的文件,让用户通过flask下载它,它只是创建一个文本文件。

上下文: 用户输入Base64编码文件,网站应解码结束,让用户下载此文件。

现状:
(decodingText是解码的base64)

from flask import make_response 

@app.route('/tools/base64', methods=['GET', 'POST'])  
def base64():  
    response = make_response(decodedText)  
    response.headers["Content-Disposition"] = "attachment; filename=file"  
    response.headers["Content-Type"] = "application/octet-stream"  
    return response

这样的结果是一个内容类似于

的文本文件
b'\xff\xd8\xff\xe0\x00\x10'

我尝试了什么:
“Content-Type”-Line就是我发现在互联网上搜索的一行,这应该告诉浏览器它是二进制文件 - 而firefox现在说它是二进制文件,但是下载时它仍然是文本...我也尝试删除b'',但我想那是明确的文字。

所以问题是:我需要告诉python / flask所以它是一个将被下载的实际二进制文件?

非常感谢你。

1 个答案:

答案 0 :(得分:0)

您拥有的文件中包含一些二进制数据。下载时,它仍然具有相同的数据。问题是文件实际上没有显式类型。文件扩展名是我们用来跟踪文件中的内容以及哪些程序可以正确使用这些文件的约定。当您下载文件时,您可能会下载没有扩展名的内容。您的计算机可能默认将其视为文本文件。

例如,如果您有.png图像的二进制文件,则可以将其下载到文件中并使用图像查看器打开它。为方便起见,您可以将其重命名为以.png。

结尾的内容