我有一个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)
非常感谢任何帮助!
答案 0 :(得分:2)
三个步骤:
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'