我有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会在内部将字节数组转换为字符串。
答案 0 :(得分:0)
好的,我想出来了。
我的代码是正确的,它以正确的格式输出文件。
问题在于freedts驱动程序,它在freedts.conf中有64512字节的限制
text size = 64512
将其更改为更合理的内容可以修复错误。