運用JQuery的AJAX實現excel檔案下載
剛剛畢業,現在在公司做一個關於閘道器api的專案。做關於excel檔案的匯入和匯出功能的實現,運用spring框架和jquery實現了檔案的下載功能。
前端程式碼:<button class="btn btn-success" v-click="download()">下載模板</button>
js檔案程式碼:
//JQuery的AJAX實現檔案下載
$scope.download = function() {
console.log('enter download ');
var form_=$("<form action='../console/rule/download.do' method='get'></form>"); //定義一個form表單
$('body').append(form_); //將表單放置在web中
form_.submit(); //表單提交
$scope.$alert({
title: "操作提示",
content: "下載模板檔案成功!",
ok: function () {
// $scope.goto("#0");//相當於返回第一頁並重新整理
console.log('okok....');
}
});
}
控制器程式碼:
@RequestMapping(value="/download",method= RequestMethod.GET)
public String download(HttpServletResponse response){
FileInputStream fis = null;
try {
fis = new FileInputStream(
new File("src/main/resources/WriteSheet.xlsx"));
response.setContentType("application/vnd.ms-excel");
//response.setContentType("multipart/form-data");//設定檔案型別
response.setHeader("Content-Disposition", "attachment;filename=Template.xlsx");//設定顯示檔名
//輸出流
OutputStream os = response.getOutputStream();
//快取位元組陣列
byte[] b = new byte[2048];
int length;
//把輸入流中的檔案分段讀入快取位元組陣列,再把位元組陣列中的資料寫到輸出流。
while ((length = fis.read(b)) > 0) {
os.write(b, 0, length);
}
os.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
//關閉流關閉。
try {
if(fis != null) {
fis.close();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return null;
}