给定URL,如何对文件进行编码';使用Python/Django将内容设置为base64?

给定URL,如何对文件进行编码';使用Python/Django将内容设置为base64?,python,django,email,encoding,Python,Django,Email,Encoding,我正在建立一个基于Django的网站,我很难找到一个像样的方法来给我的用户发送一些更大的PDF等 有问题的文件从未接触过我们的服务器;它们由CDN处理。因此,我的出发点是文件的唯一URL,而不是文件本身。如果能找到一个不需要在本地保存文件的解决方案,那就太好了 为了让我能够以我想要的方式发送电子邮件(附带PDF/DOCX/任何附件),我需要能够将附件编码为base-64字符串 我宁愿不保存文件到我们的服务器;我也不希望将响应对象分块读取,然后将其明文写入服务器上的文件,然后对该文件进行编码 也就

我正在建立一个基于Django的网站,我很难找到一个像样的方法来给我的用户发送一些更大的PDF等

有问题的文件从未接触过我们的服务器;它们由CDN处理。因此,我的出发点是文件的唯一URL,而不是文件本身。如果能找到一个不需要在本地保存文件的解决方案,那就太好了

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

我宁愿不保存文件到我们的服务器;我也不希望将响应对象分块读取,然后将其明文写入服务器上的文件,然后对该文件进行编码

也就是说,给定一个文件的直接url,有没有一种方法可以对响应进行流式处理,并在响应传入时在base64中对其进行编码

我一直在读Django的
StreamingHttpResponse
FileWrapper
,感觉我已经很接近了,但我还不能把它组合起来

编辑:下面的代码片段目前正在运行,但我担心内存使用情况-这种情况下的扩展情况如何

import base64
req = requests.get('url')
encoded = base64.b64encode(req.content)
感谢您,我能够轻松实现以下简单功能:

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

作为这个问题的解决方案

这些PDF文件平均有多大?多久运行一次?通常在10-15兆左右。至于使用频率,会出现峰值-长时间(一天左右)没有任何东西,然后可能会有30-50个这样的请求,一个小时持续几个小时。我们保守地说,每小时60个请求,每个PDF中的读取有5倍的内存占用(即75兆)。因此,在峰值时,每分钟一个请求占用75MB内存。假设这是在一个合理的系统上运行的,我看不出这会导致问题。谢谢你用一个例子来解释-我这边的灯泡终于亮了。我很感激!