mirror of
https://github.com/linuxserver/emulatorjs.git
synced 2026-01-21 04:33:10 +08:00
add ability to download a full backup
This commit is contained in:
parent
e923fb4b36
commit
2285047e4e
@ -4,9 +4,13 @@
|
||||
<link rel="stylesheet" href="css/filebrowser.css">
|
||||
<script type="text/javascript" src="js/vendor/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="js/vendor/browserfs.min.js"></script>
|
||||
<script type="text/javascript" src="js/vendor/jszip.min.js"></script>
|
||||
<script type="text/javascript" src="js/filebrowser.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<span id="buttons">
|
||||
<button onclick="downloadBackup()">DL Full Backup</button>
|
||||
</span>
|
||||
<div id="filebrowser"></div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@ -51,6 +51,40 @@ async function downloadFile(file) {
|
||||
$("body").remove(a);
|
||||
}
|
||||
|
||||
// Download a full backup of all files
|
||||
async function downloadBackup() {
|
||||
var zip = new JSZip();
|
||||
let items = await fs.readdirSync('/');
|
||||
async function addToZip(item) {
|
||||
if (fs.lstatSync(item).isDirectory()) {
|
||||
let items = await fs.readdirSync(item);
|
||||
if (items.length > 0) {
|
||||
for await (let subPath of items) {
|
||||
await addToZip(item + '/' + subPath);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
let data = fs.readFileSync(item);
|
||||
let zipPath = item.replace(/^\//,'');
|
||||
zip.file(zipPath, data);
|
||||
}
|
||||
return ''
|
||||
}
|
||||
for await (let item of items) {
|
||||
await addToZip(item);
|
||||
}
|
||||
zip.generateAsync({type:"blob"}).then(function callback(blob) {
|
||||
let url = window.URL || window.webkitURL;
|
||||
link = url.createObjectURL(blob);
|
||||
let a = $("<a />");
|
||||
a.attr("download", 'emulatorjs.zip');
|
||||
a.attr("href", link);
|
||||
$("body").append(a);
|
||||
a[0].click();
|
||||
$("body").remove(a);
|
||||
});
|
||||
}
|
||||
|
||||
// Create IndexDB filestore
|
||||
async function setupFileSystem() {
|
||||
var imfs = new BrowserFS.FileSystem.InMemory();
|
||||
|
||||
13
frontend/js/vendor/jszip.min.js
vendored
Normal file
13
frontend/js/vendor/jszip.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user