2013-07-22 66 views
0

我嘗試向客戶端發送CSV數據。發送文件到客戶端Java播放

以下是我如何繼續: 客戶端:ajax調用服務器來獲取文件。

$.ajax({ 
    url:"/csv/"+source, 
    method:'post', 
    data:JSON.stringify(json), 
    contentType: "application/json; charset=utf-8" 
}); 

服務器端:生成該文件,然後將其發送回客戶端。

File file = CSVGenerator.generateFromJson(source, request().body().asJson()); 
    response().setHeader("Content-Lenght", String.valueOf(file.length())); 
    response().setHeader("Content-Disposition", "attachment; filename=\""+file.toString()+"\""); 
    return ok(file).as("text/csv"); 

我嘗試了很多回報。例如我嘗試這樣做:

return ok(new FileInputStream(file)).as("text/csv"); 

我也試着像許多標題:

response().setContent("text/csv"); 

response().setHeader("Content-Type","text/csv"); 

,而不是.as("text/csv")

客戶端得到一個良好的響應頭,數據很好,但從不開始下載。

我錯過了什麼?

+0

@EoiFirst你應該寫的語言的名字它是怎樣來寫。就像你會爲一個人的名字,品牌或其他任何東西一樣。話雖如此,客戶端上發生了什麼_does_?我看到的唯一突出之處是'Content-Length'拼寫錯誤。 –

+0

感謝您的提示。長度確實錯誤,但沒有改變任何東西。在客戶端上什麼都沒有發生。我可以看到響應沒問題,但沒有開始下載 – EoiFirst

+0

簡單地說:'return ok(file);',你試過了嗎? – Aerus

回答

0

經過幾個小時的研究後,問題是下載無法從ajax調用開始。

以下是我解決了這個問題:

感謝您的幫助:

window.open("/csv/"+source+"/"+encodeURIComponent(csvData)); 
相關問題