1.根据前台传的code,得到对应的文件,这里处理的是excel和word,将文件的后缀名存入“Content-Type”,这里要在得到文件对应的byte[]之前设置setHeader,否则不生效
后端实现:
@RequestMapping(value = "/get-file", method = GET)
@ResponseBody
public void getFile(@RequestParam String majorCode,@RequestParam String minorCode,HttpServletResponse rsp) throws IOException{
String suffix = service.getSuffix(majorCode, minorCode);
byte[] bb = service.getFile(majorCode, minorCode);
if(suffix == null) {
rsp.setHeader("Content-Type",
"null");
}
if(suffix!=null) {
if(suffix.equals("xlsx"))
rsp.setHeader("Content-Type",
"xlsx");
else if(suffix.equals("xls"))
rsp.setHeader("Content-Type",
"xls");
else if(suffix.equals("doc"))
rsp.setHeader("Content-Type",
"doc");
else if(suffix.equals("docx"))
rsp.setHeader("Content-Type", "docx");
else
rsp.setHeader("Content-Type",
"null");
}
rsp.getOutputStream().write(bb);
}
2.HTML加入
文件上传的按钮只显示word和excel这两个类型
<input name="file" data-ngf-select type="file" style="display: none" id="hiddenFile" ng-model="uploadCtrl.file"
ng-show="false" ngf-max-size="{{uploadCtrl.maxFileSize}}" ngf-change="uploadCtrl.invalidFile()"
accept="application/vnd.ms-excel,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/msword">
3.angularjs
function downloadTemplate(){
statusChangeTypeDao.getFileUrl(vm.item.majorCode, vm.item.minorCode ,function(response,status, headers, config){
if(headers('Content-Type') == "xlsx"){
FileExport.export(response,"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;",
"信息.xlsx");
}else if(headers('Content-Type') == "xls"){
FileExport.export(response,"application/vnd.ms-excel;",
"信息.xls");
}else if(headers('Content-Type') == "docx"){
FileExport.export(response,"application/vnd.openxmlformats-officedocument.wordprocessingml.document;",
"信息.docx");
}else{
FileExport.export(response,"application/msword;",
"信息.doc");
}
})
}