给定一个URL,如何使用Python / Django将文件的内容编码为base64?

时间:2014-07-22 19:06:08

标签: python django email encoding

我正在构建一个基于Django的网站,但我很难找到一种合适的方法来向我的用户发送一些较大的PDF等邮件。

有问题的文件从不接触我们的服务器;他们在CDN上处理。所以,我的出发点是文件的唯一URL,而不是文件本身。很高兴找到一个不涉及在本地保存文件的解决方案。

为了让我能够以我想要的方式发送电子邮件(使用PDF / DOCX /附加的任何内容),我需要能够将附件编码为base-64字符串。

我不想将文件保存到我们的服务器;我也不想以块的形式读取响应对象并将其明确地写入我们服务器上的文件,然后对该文件进行编码。

那说,给定一个文件的直接url是否有一种流式传输响应并在base64中对其进行编码的方法?

我一直在阅读有关Django的StreamingHttpResponseFileWrapper的信息,感觉我很亲近,但我还没有把它放在一起。

编辑:下面的代码片段现在正在使用,但我担心内存使用情况 - 这种情况有多好?

import base64
req = requests.get('url')
encoded = base64.b64encode(req.content)

1 个答案:

答案 0 :(得分:0)

感谢beetea我很乐意实现简单的:

import base64
req = requests.get('url')
encoded = base64.b64encode(req.content)

作为解决这个问题的方法。