1.前端form表单
<form id="backupFrom" action="${ctx}/business/database/backup" method="post" enctype="application/octet-stream"
class="form-signin">
2.后台
@RequiresPermissions("business:database:edit") @RequestMapping(value = {"backup"}, produces = "application/octet-stream;charset=UTF-8") public ResponseEntity<byte[]> systemBackup(@RequestParam("username") String username, @RequestParam("password") String password, Model model) throws Exception { byte[] bytes = null; String databaseName = Global.getConfig("db.name") + ".sql"; HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); //防止下载文件的名字乱码! headers.setContentDispositionFormData("attachment", URLEncoder.encode(databaseName, "UTF-8")); try{ File file = new File("源文件的路径+名字"); bytes = FileUtils.readFileToByteArray(file); headers.setContentLength(bytes.length); //HttpStatus.OK也可以 return new ResponseEntity<byte[]>(bytes, headers, HttpStatus.CREATED); } catch (Exception e) { e.printStackTrace(); ConsoleLogger.consolePrintLog(ELogLevel.DEBUG, "数据库备份失败", e); model.addAttribute(FormAuthenticationFilter.DEFAULT_MESSAGE_PARAM, "数据库备份失败,系统找不到指定的文件"); return "modules/business/databaseBackup"; } }