2
我目前正在與Play Framework
(使用Java
控制器)一起開展項目,並且在單擊按鈕並從中獲取信息後,我試圖強制瀏覽器下載.txt
和.xls
文件控制器。儘管我正確地構建了這兩種類型的文件,但我還沒有找到強制下載它的方式。
經過幾個小時的深入調查,我設法通過JavascriptRoutes
和Ajax
調用控制器Javascript
,但我不能強制下載,儘管我可以將.txt
內容放入div(加載正確)。單擊Play Framework上的按鈕後強制文件下載
這是我現在有:
function exportText(){
jsRoutes.controllers.User.generateText().ajax({
success: function(data) {
$('#testDiv').html(data);
},
error: function() {
alert("Error!")
}
})
}
(exportText()點擊一個按鈕時叫)
public static Result generateText() {
response().setContentType("application/x-download");
response().setHeader("Content-disposition","attachment; filename=test.txt");
return ok(generateTXT("test.txt"));
}
(generateTXT(字符串)檢索File
文件)
任何幫助將真正apreciated!謝謝!
編輯
的javascriptRoutes方法是這樣的:
public static Result javascriptRoutes() {
response().setContentType("text/javascript");
return ok(
Routes.javascriptRouter("jsRoutes",
// Routes
controllers.routes.javascript.User.generateText()
)
);
}
難道應該是「Content-Disposition」而不是「Content-disposition」? – johanandren
還是一樣的迴應!也許我沒有正確地「下載」文件,一旦「Ajax」部分成功......謝謝! – FranciscoBouza
啊哈,沒有考慮js代碼,你有沒有試過將window.location設置爲導出url(你可以從jsroutes-object中獲取它),而不是用ajax調用它? – johanandren