【发布时间】:2017-11-24 03:12:38
【问题描述】:
所以我面临的问题是试图让我们的网络服务器导出到 CSV 按钮工作,一个要求是文件不能在本地保存,必须直接流式传输到客户端。目前,我只是想从服务器获取一个基本的 CSV 文件流式传输并保存在本地机器上,然后再担心呈现实际数据。
所以,我有,在按钮上单击我希望呈现的视图的帖子,然后返回响应。这是一个 $.ajax 函数,但我在测试期间对其进行了更改,现在看起来像这样:
$("#exportbutton").click(function(e){
$.post("{% url 'doner:download' %}", function(data)
{
console.log(data);
});
})
视图中的代码如下所示(恰好是来自 SO 的示例的 CTRL+V):
def download(request):
def stream():
buffer_ = io.StringIO()
writer = csv.writer(buffer_)
for row in rows:
writer.writerow(row)
buffer_.seek(0)
data = buffer_.read()
buffer_.seek(0)
buffer_.truncate()
yield data
response = StreamingHttpResponse(
stream(), content_type='text/csv'
)
disposition = "attachment; filename=file.csv"
response['Content-Disposition'] = disposition
return response
因此,经过大量的修补,这就是我所得到的,它会将数据“流式传输”(?)返回 HTML 页面,console.log 将输出“文件”数据但我没有得到任何形式的文件或下载,只需在数据的控制台中登录即可。
我不知道我是否误解了 StreamingHttpResponse 的工作原理,我打算在客户端做更多的事情以便将其下载到流中,但我已经阅读了文档,但我并不清楚.
任何帮助将不胜感激,因为我被难住了,干杯!
【问题讨论】:
标签: python django csv httpresponse