因此,我面臨的問題是試圖讓我們的Web服務器導出爲CSV按鈕工作,一個要求是文件無法在本地保存,必須直接傳輸到客戶端。目前,我只是試圖從服務器上獲取基本的CSV文件流並保存在本地計算機上,然後才擔心渲染實際數據。使用StreamingHttpResponse流式傳輸和下載大型CSV文件
所以,我有,按鈕上點擊一個職位,我的意見,我想渲染然後返回一個響應。這是一個$就功能,但在測試過程中我已經改變了,因爲它和它現在看起來,這看起來像:
$("#exportbutton").click(function(e){
$.post("{% url 'doner:download' %}", function(data)
{
console.log(data);
});
})
視圖中的代碼看起來是這樣的(這恰好是一個一個CTRL + V例如,從SO):
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是如何工作的,我打算在客戶端做更多的事情,以便通過流下載它,但是我已經閱讀了文檔,我也沒有更多明確。
任何幫助將不勝感激,因爲我難倒,歡呼傢伙!