Transaction

8b9565c3ff84e2c282b545dfac3e71c8a081baa952400fe38e8eef155d83375a
Timestamp (utc)
2024-03-05 14:53:30
Fee Paid
0.00000088 BSV
(
0.00004277 BSV
-
0.00004189 BSV
)
Fee Rate
15.13 sat/KB
Version
1
Confirmations
96,614
Size Stats
5,816 B

2 Outputs

Total Output:
0.00004189 BSV
  • j"19HxigV4QyBv3tHpQVcUEQyq1pzZVdoAutMG<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>File Splitter</title> <style> body { font-family: Arial, sans-serif; } #choices { text-align: center; margin-top: 100px; } #buttons { display: flex; justify-content: center; gap: 20px; margin-top: 20px; } #splitter, #reconsituteChunks { display: none; text-align: center; margin-top: 20px; } #downloadLinks, #reconsituteLinks { margin-top: 20px; } </style> </head> <body> <section id="choices"> <h1>File Splitter</h1> <p> This is a simple file splitter that allows you to split a file into smaller chunks and reconsitute them back into the original file. </p> <div id="buttons"> <button onclick="document.getElementById('splitter').style.display = 'block'; document.getElementById('reconsituteChunks').style.display = 'none';" > Split File </button> <button onclick="document.getElementById('reconsituteChunks').style.display = 'block'; document.getElementById('splitter').style.display = 'none';" > Reconsitute File </button> </div> </section> <section id="splitter"> <input type="file" id="fileInput" /> <button onclick="splitFile()">Split File</button> <div id="downloadLinks"></div> </section> <section id="reconsituteChunks"> <!-- multi file input --> <input type="file" id="chunkInput" multiple /> <button onclick="reconsituteFile()">Reconsitute File</button> <div id="reconsituteLinks"></div> </section> <script> function splitFile() { const fileInput = document.getElementById("fileInput"); const file = fileInput.files[0]; // Get the uploaded file if (!file) { alert("Please select a file first!"); return; } const chunkSize = 8 * 1024 * 1024; // 8MB in bytes let offset = 0; let chunkIndex = 0; while (offset < file.size) { const chunk = file.slice(offset, offset + chunkSize); downloadChunk(chunk, chunkIndex++, file.type); offset += chunkSize; } } function downloadChunk(chunk, index, mimeType) { const reader = new FileReader(); reader.onload = function (e) { const blob = new Blob([e.target.result], { type: "octet/stream" }); const url = window.URL.createObjectURL(blob); const link = document.createElement("a"); link.href = url; link.download = `chunk-${mimeType}-${index}.part`; document.body.appendChild(link); link.click(); document.body.removeChild(link); }; reader.readAsArrayBuffer(chunk); } function reconsituteFile() { const chunkInput = document.getElementById("chunkInput"); const files = chunkInput.files; if (!files.length) { alert("Please select a file first!"); return; } const chunks = Array.from(files).sort((a, b) => { const aIndex = parseInt(a.name.split("-")[1].split(".")[0]); const bIndex = parseInt(b.name.split("-")[1].split(".")[0]); return aIndex - bIndex; }); //get from name of part, remove the part and get the mime type const mimeType = chunks[0].name.split("-")[1].split(".")[0]; let fileExtension = ""; const blob = new Blob(chunks, { type: "octet/stream" }); const url = window.URL.createObjectURL(blob); const link = document.createElement("a"); link.href = url; //check mime type for contains pdf, jpg, png,mpeg, mp3, wav, orbis, flac, mp4, video, iso, zip, html, text, octet-stream, and everything else if (mimeType.includes("pdf")) { fileExtension = "pdf"; } else if (mimeType.includes("jpg")) { fileExtension = "jpg"; } else if (mimeType.includes("png")) { fileExtension = "png"; } else if (mimeType.includes("mpeg")) { fileExtension = "mpeg"; } else if (mimeType.includes("mp3")) { fileExtension = "mp3"; } else if (mimeType.includes("wav")) { fileExtension = "wav"; } else if (mimeType.includes("orbis")) { fileExtension = "orbis"; } else if (mimeType.includes("flac")) { fileExtension = "flac"; } else if (mimeType.includes("mp4")) { fileExtension = "mp4"; } else if (mimeType.includes("video")) { fileExtension = "video"; } else if (mimeType.includes("iso")) { fileExtension = "iso"; } else if (mimeType.includes("zip")) { fileExtension = "zip"; } else if (mimeType.includes("html")) { fileExtension = "html"; } else if (mimeType.includes("text")) { fileExtension = "text"; } else if (mimeType.includes("octet-stream")) { fileExtension = "octet-stream"; } else { fileExtension = "unknown"; } link.download = `reconsituted-file.${fileExtension}`; document.body.appendChild(link); link.click(); document.body.removeChild(link); } </script> </body> </html> text/htmlutf-8|"1PuQa7K62MiKCtssSLKy1kh56WWU7MtUR5SETapp utxo-cloudtypewebsiteauthor"1EnwpGfquHfxbTw8F5jbtT9ZG3mYCQWt5j
    https://whatsonchain.com/tx/8b9565c3ff84e2c282b545dfac3e71c8a081baa952400fe38e8eef155d83375a