如何在Python/Django中将文件内容编码为Base64?
我正在搭建一个基于Django的网站,但在给用户发送一些较大的PDF文件时遇到了麻烦。
这些文件并不存储在我们的服务器上,而是由一个内容分发网络(CDN)来处理。所以,我手头只有这些文件的唯一网址,而不是文件本身。如果能找到一种不需要将文件保存在本地的解决方案,那就太好了。
为了让我能按照想要的方式发送邮件(也就是把PDF、DOCX等文件作为附件发送),我需要把附件编码成一种叫做base-64的字符串。
我更倾向于不把文件保存到我们的服务器上;我也不想分块读取响应对象,然后把它直接写到服务器上的文件中,再去编码那个文件。
那么,假如我有一个文件的直接网址,有没有办法在文件响应到达时,边接收边将其编码成base-64呢?
我在研究Django的StreamingHttpResponse
和FileWrapper
,感觉离解决方案不远了,但还没有完全搞定。
编辑:下面的代码片段现在可以工作,但我担心内存使用问题——这种方法的扩展性如何呢?
import base64
req = requests.get('url')
encoded = base64.b64encode(req.content)
1 个回答
0
感谢beetea的帮助,我现在可以轻松地实现这个简单的:
import base64
req = requests.get('url')
encoded = base64.b64encode(req.content)
作为解决这个问题的方法。