File size: 3,888 Bytes
ad9949b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 | <!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Video Uploader for Hugging Face Spaces</title>
<style>
body {
font-family: Arial, sans-serif;
max-width: 800px;
margin: 0 auto;
padding: 20px;
background-color: #f0f0f0;
}
h1 {
color: #333;
text-align: center;
}
#upload-form {
background-color: white;
padding: 20px;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
#file-input {
display: none;
}
#file-label {
display: inline-block;
padding: 10px 20px;
background-color: #007bff;
color: white;
cursor: pointer;
border-radius: 4px;
}
#file-name {
margin-top: 10px;
}
#upload-button {
display: block;
width: 100%;
padding: 10px;
background-color: #28a745;
color: white;
border: none;
border-radius: 4px;
cursor: pointer;
margin-top: 10px;
}
#progress-bar {
width: 100%;
height: 20px;
background-color: #e0e0e0;
border-radius: 4px;
margin-top: 10px;
overflow: hidden;
}
#progress {
width: 0%;
height: 100%;
background-color: #28a745;
transition: width 0.3s ease;
}
#status {
margin-top: 10px;
text-align: center;
font-weight: bold;
}
</style>
</head>
<body>
<h1>Video Uploader for Hugging Face Spaces</h1>
<div id="upload-form">
<input type="file" id="file-input" accept=".mp4,.mkv,.avi,.mov">
<label for="file-input" id="file-label">Choose File</label>
<div id="file-name"></div>
<button id="upload-button" disabled>Upload</button>
<div id="progress-bar">
<div id="progress"></div>
</div>
<div id="status"></div>
</div>
<script>
const fileInput = document.getElementById('file-input');
const fileLabel = document.getElementById('file-label');
const fileName = document.getElementById('file-name');
const uploadButton = document.getElementById('upload-button');
const progressBar = document.getElementById('progress');
const status = document.getElementById('status');
fileInput.addEventListener('change', (e) => {
if (e.target.files.length > 0) {
fileName.textContent = `Selected file: ${e.target.files[0].name}`;
uploadButton.disabled = false;
} else {
fileName.textContent = '';
uploadButton.disabled = true;
}
});
uploadButton.addEventListener('click', async () => {
const file = fileInput.files[0];
if (!file) return;
const formData = new FormData();
formData.append('file', file);
try {
status.textContent = 'Uploading...';
const response = await fetch('/upload', {
method: 'POST',
body: formData
});
if (response.ok) {
status.textContent = 'Upload successful!';
progressBar.style.width = '100%';
} else {
throw new Error('Upload failed');
}
} catch (error) {
status.textContent = `Error: ${error.message}`;
}
});
</script>
</body>
</html> |