使用django rest框架将base 64编码的字符串转换为可下载的pdf

时间:2016-10-11 17:45:41

标签: python django python-3.x django-rest-framework

我有一个django / python3应用程序,它请求Limesurvey API并获得一个base 64编码的字符串作为结果。 我想将此结果作为可下载的pdf文件返回。

这是我当前的实现,它只是将基本64字符串显示为空白页...

    data = limesurvey.export_responses_by_token(survey_id, token)
    response = HttpResponse(data, content_type='application/pdf')
    return StreamingHttpResponse(response)

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

三个步骤:

将base64内容转储到StringIO

import cStringIO as StringIO
buffer = StringIO.StringIO()
content.decode('base64')
buffer.write(content)

使用正确的标题发送回复

from django.http import HttpResponse
from wsgiref.util import FileWrapper

# generate the file
response = HttpResponse(FileWrapper(buffer.getvalue()), content_type='application/zip')
response['Content-Disposition'] = 'attachment; filename=MY_FILE_NAME.zip'
return response

配置您的服务器

超出django的范围。

e.g。对于nginx,请参阅this link

更新

在某些online converter测试您的内容后,我确定这是base64内容。

然而,在提供进一步的信息之前,它不起作用的原因仍然未知。

我的模拟片段就是这样。

>>> test_str = 'test'
>>> base_64 = test_str.encode('base64')
>>> base_64.decode('base64')
'test'
>>> base_64
'dGVzdA==\n'