function isImgUrl(url) {
const imageExtensions = /\.(jpg|jpeg|png|gif|bmp|webp)$/i;
if (url.startsWith('data:image/')) {
return true;
}
if (url.match(imageExtensions)) {
return true;
}
if (url.startsWith('http://') || url.startsWith('https://')) {
return true;
}
return false;
}
function downloadHistory(username, historyname) {
let fileUrl;
if (username === null) {
fileUrl = `/file=./history/${historyname}`;
} else {
fileUrl = `/file=./history/${username}/${historyname}`;
}
downloadFile(fileUrl, historyname);
}
function downloadFile(fileUrl, filename="") {
// 发送下载请求
fetch(fileUrl)
.then(response => response.blob())
.then(blob => {
// 创建一个临时的URL
const url = URL.createObjectURL(blob);
// 创建一个隐藏的元素,设置下载属性
const a = document.createElement('a');
a.style.display = 'none';
a.href = url;
a.download = filename;
// 添加到DOM并触发点击事件
document.body.appendChild(a);
a.click();
// 清理临时URL和DOM中的元素
URL.revokeObjectURL(url);
document.body.removeChild(a);
})
.catch(error => {
console.error('Failed to download file:', error);
});
}
/* NOTE: These reload functions are not used in the current version of the code.
* From stable-diffusion-webui
*/
function restart_reload() {
document.body.innerHTML = 'Reloading...
';
var requestPing = function () {
requestGet("./internal/ping", {}, function (data) {
location.reload();
}, function () {
setTimeout(requestPing, 500);
});
};
setTimeout(requestPing, 2000);
return [];
}
function requestGet(url, data, handler, errorHandler) {
var xhr = new XMLHttpRequest();
var args = Object.keys(data).map(function (k) {
return encodeURIComponent(k) + '=' + encodeURIComponent(data[k]);
}).join('&');
xhr.open("GET", url + "?" + args, true);
xhr.onreadystatechange = function () {
if (xhr.readyState === 4) {
if (xhr.status === 200) {
try {
var js = JSON.parse(xhr.responseText);
handler(js);
} catch (error) {
console.error(error);
errorHandler();
}
} else {
errorHandler();
}
}
};
var js = JSON.stringify(data);
xhr.send(js);
}