У меня есть приложение, которое я использую H2DB, и теперь я хочу сделать резервную копию и загрузку этого файла базы данных.
conn = dataSource.getConnection();
conn.prepareStatement(String.format("BACKUP TO '%s'", savePath + fileName)).executeUpdate();
Когда вызывается API резервного копирования, выполняется приведенный выше оператор.
Убедитесь, что файл резервной копии правильно создан в пути сохранения, и нажмите кнопку загрузки в Интернете, чтобы загрузить созданный файл резервной копии (zip).
Однако, если вы откроете файл загрузки,там написано «Не удается открыть файл» или «Файл поврежден».Появится сообщение.
Размер файла zip также увеличивается.В чем проблема?
filedownload.java
try {
backup.backupDatabase();
} catch (SQLException e) {
System.out.println(e.getMessage());
}
String fileName = backup.getFileName();
File downloadfile = new File(backup.getUrl() + fileName+".zip");
if (downloadfile.exists() && downloadfile.isFile()) {
response.setContentType("application/octet-stream");
response.setContentLength((int) downloadfile.length());
ServletOutputStream os = null;
FileOutputStream fos = null;
FileInputStream fis = null;
try {
response.setHeader("Content-Disposition", getDisposition(fileName+".zip", check_browser(request)));
response.setHeader("Content-Transfer-Encoding", "binary");
os = response.getOutputStream();
fis = new FileInputStream(downloadfile);
FileCopyUtils.copy(fis, os);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (fis != null){
fis.close();
}
if (fos != null){
fos.close();
}
os.flush();
os.close();
} catch (Exception e2) {}
}
} else {
System.out.println("FILE Not Found");
}
controller.js
$http.get("/api/download/download").success(function(data){
filePath = filePath.replace("D:", "");
filePath = filePath.replace(/\\/gi, "/");
var link = document.createElement('a');
link.id="lnkDwnldLnk";
document.body.appendChild(link);
var date = $filter('date')(new Date(),'yyyy-MM-dd');
var filename = "123" + date + '.zip';
var blob = new Blob([data]);
var url = (window.URL ? URL : webkitURL).createObjectURL(blob);
if (navigator.msSaveBlob) {
return navigator.msSaveBlob(blob, filename);
} else {
$("#lnkDwnldLnk")
.attr({
'download': filename,
'href': url
});
$('#lnkDwnldLnk')[0].click();
document.body.removeChild(link);
}
(window.URL ? URL : webkitURL).revokeObjectURL(url);
});