Calculator Tools Calculator Tools
Create

Video Cloud Storage App

May 30, 2026

About this app

A powerful video cloud storage app for uploading, managing, and playing videos with seamless playback options and unlimited storage.

Video Cloud Storage App Video Cloud Storage Upload Video 0% Video Thumbnails Storage Used: Delete Video

Related apps

Put this on your site

Source

                    <html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">

<title>Video Cloud Storage App</title>
<meta name="description" content="A powerful video cloud storage app for uploading, managing, and playing videos with seamless playback options and unlimited storage.">
<meta name="keywords" content="video, upload, cloud storage, play, download, invoke, video player, thumbnails">

<!-- Libraries -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.min.js" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.6.0/css/fontawesome.min.css" crossorigin="anonymous">

<script type="text/javascript">
try {
let videoID = 1; // Unique video incrementer
const videos = [];

function updateStorageUsed() {
// Update storage used display
$('#storage-used').text('0.0 B of unlimited');
}

document.addEventListener("DOMContentLoaded", function() {
updateStorageUsed();

$('#upload-form').on('submit', (e) => {
e.preventDefault();
const file = $('#file-input')[0].files[0];
if (!file || ['video/mp4', 'video/wmv', 'video/quicktime', 'video/ogg'].indexOf(file.type) === -1) {
alert('Please upload a valid video file (MP4, WMV, MOV, OGV)');
return;
}

const formData = new FormData();
formData.append('video', file);

const xhr = new XMLHttpRequest();
xhr.open('POST', '/upload', true);
xhr.upload.onprogress = function(event) {
const percent = (event.loaded / event.total) * 100;
$('#progress-bar').css('width', percent + '%').text(Math.round(percent) + '%');
};
xhr.onload = function() {
if (xhr.status === 200) {
const videoPath = URL.createObjectURL(file);
thumbnails.push({id: videoID, url: videoPath});
videos.push(videoPath);
$('#thumbnails').append(`<img src="${videoPath}" class="video-thumbnail" data-id="${videoID}">`);
videoID++;
updateStorageUsed();
}
};
xhr.send(formData);
});

$(document).on('click', '.video-thumbnail', function() {
const id = $(this).data('id');
videoPlayer.src = videos[id-1];
videoPlayer.play();
});

$('#delete-btn').on('click', function() {
const videoToRemove = parseInt($('#volume-number').val());
// Logic to remove video and update interface
});
});
} catch (error) {
throw error;
}
</script>

<style>
body {
background: linear-gradient(to right, #ff7e5f, #feb47b);
color: white;
font-family: Arial, sans-serif;
}
#progress-bar {
transition: width 0.5s;
}
.video-thumbnail {
margin: 10px;
width: 100px;
cursor: pointer;
opacity: 0.8;
transition: transform 0.2s;
}
.video-thumbnail:hover {
transform: scale(1.1);
opacity: 1;
}
.container {
max-width: 900px;
margin: auto;
padding: 20px;
}
#video-player {
width: 100%;
margin-bottom: 10px;
}
</style>
</head>
<body>
<div id="main-container" class="container">
<h1>Video Cloud Storage</h1>
<div>
<video id="video-player" controls loop></video>
</div>
<form id="upload-form" class="mb-3">
<input type="file" id="file-input" accept=".mp4,.wmv,.mov,.ogv" required>
<button type="submit" class="btn btn-primary">Upload Video</button>
</form>
<div id="progress" class="progress mb-3" style="height: 20px;">
<div id="progress-bar" class="progress-bar bg-success" role="progressbar" style="width: 0%;" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100">0%</div>
</div>
<h5>Video Thumbnails</h5>
<div id="thumbnails" class="d-flex flex-wrap"></div>
<h5>Storage Used: <span id="storage-used"></span></h5>
<button id="delete-btn" class="btn btn-danger">Delete Video</button>
</div>
</body>
</html>