mirror of
https://github.com/esp8266/Arduino.git
synced 2025-06-12 01:53:07 +03:00
Improvements to the existing ETag implementation (#8227)
* WebServer eTag implementation improvements
This commit is contained in:
65
libraries/ESP8266WebServer/examples/WebServer/data/files.htm
Normal file
65
libraries/ESP8266WebServer/examples/WebServer/data/files.htm
Normal file
@ -0,0 +1,65 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>Files</title>
|
||||
<link Content-Type="text/css" href="/style.css" rel="stylesheet" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>Files on Server</h1>
|
||||
|
||||
<p>These files are available on the server to be opened or delete:</p>
|
||||
<div id="list">
|
||||
</div>
|
||||
|
||||
<script>
|
||||
// load and display all files after page loading has finished
|
||||
window.addEventListener("load", function () {
|
||||
fetch('/$list')
|
||||
.then(function (result) { return result.json(); })
|
||||
.then(function (e) {
|
||||
var listObj = document.querySelector('#list');
|
||||
e.forEach(function (f) {
|
||||
var entry = document.createElement("div");
|
||||
var nameObj = document.createElement("a");
|
||||
nameObj.href = '/' + f.name;
|
||||
nameObj.innerText = '/' + f.name;
|
||||
entry.appendChild(nameObj)
|
||||
|
||||
entry.appendChild(document.createTextNode(' (' + f.size + ') '));
|
||||
|
||||
var timeObj = document.createElement("span");
|
||||
timeObj.innerText = (new Date(f.time*1000)).toLocaleString();
|
||||
entry.appendChild(timeObj)
|
||||
entry.appendChild(document.createTextNode(" "));
|
||||
|
||||
var delObj = document.createElement("span");
|
||||
delObj.className = 'deleteFile';
|
||||
delObj.innerText = ' [delete]';
|
||||
entry.appendChild(delObj)
|
||||
|
||||
listObj.appendChild(entry)
|
||||
});
|
||||
|
||||
})
|
||||
.catch(function (err) {
|
||||
window.alert(err);
|
||||
});
|
||||
});
|
||||
|
||||
window.addEventListener("click", function (evt) {
|
||||
var t = evt.target;
|
||||
if (t.className === 'deleteFile') {
|
||||
var fname = t.parentElement.innerText;
|
||||
fname = '/'+ fname.split(' ')[0];
|
||||
if (window.confirm("Delete " + fname + " ?")) {
|
||||
fetch(fname, { method: 'DELETE' });
|
||||
document.location.reload(false);
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
24
libraries/ESP8266WebServer/examples/WebServer/data/index.htm
Normal file
24
libraries/ESP8266WebServer/examples/WebServer/data/index.htm
Normal file
@ -0,0 +1,24 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<title>HomePage</title>
|
||||
<link Content-Type="text/css" href="/style.css" rel="stylesheet" />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<h1>Homepage of the WebServer Example</h1>
|
||||
|
||||
<p>The following pages are available:</p>
|
||||
<ul>
|
||||
<li><a href="/index.htm">/index.htm</a> - This page</li>
|
||||
<li><a href="/files.htm">/files.htm</a> - Manage files on the server</li>
|
||||
<li><a href="/$upload.htm">/$upload.htm</a> - Built-in upload utility</a></li>
|
||||
</ul>
|
||||
|
||||
<p>The following REST services are available:</p>
|
||||
<ul>
|
||||
<li><a href="/$sysinfo">/$sysinfo</a> - Some system level information</a></li>
|
||||
<li><a href="/$list">/$list</a> - Array of all files</a></li>
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
10
libraries/ESP8266WebServer/examples/WebServer/data/style.css
Normal file
10
libraries/ESP8266WebServer/examples/WebServer/data/style.css
Normal file
@ -0,0 +1,10 @@
|
||||
html, body {
|
||||
color: #111111; font-family: Arial, ui-sans-serif, sans-serif; font-size: 1em; background-color: #f0f0f0;
|
||||
}
|
||||
|
||||
#list > div {
|
||||
margin: 0 0 0.5rem 0;
|
||||
}
|
||||
|
||||
a { color: inherit; cursor: pointer; }
|
||||
|
Reference in New Issue
Block a user