使用Flask存储在VARBINARY列中的输出文件

时间:2013-11-05 19:07:32

标签: python flask flask-sqlalchemy pymssql

我有Flask前端项目,我使用flask-sqlalchemy和pymssql数据库。 现有的.net工具可以将文件保存到sql server db中的varbinary(max)列,它也可以下载文件。 现在我需要使用flask视图从varbinary(max)列输出这些文件。

我目前有以下代码

// in model 

content = db.Column(VARBINARY())

// in view
query = models.File.query

f = query.filter(models.File.request_id == request_id).first_or_404()

response = Response(f.content, content_type='application/pdf')
response.headers["Content-Disposition"] = "attachment;filename={0}".format(file_name)

return response

文件主要是pdf,样本pdf工作正常,但正常的pdf文件已损坏,我知道它们在db中没问题,因为.net客户端下载它们就好了。

那么如何调整f.content编码,以便用户可以打开提到的pdf文件?

有趣的是,类型(f.content)返回'str'所以我相信flask-sqlalchemy会在内部将字节数组转换为字符串。

1 个答案:

答案 0 :(得分:0)

好的,我想出来了。

我的代码是正确的,它以正确的格式输出文件。

问题在于freedts驱动程序,它在freedts.conf中有64512字节的限制

text size = 64512

将其更改为更合理的内容可以修复错误。