coollsd commited on
Commit
77a91cf
1 Parent(s): cff545e

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +59 -10
app.py CHANGED
@@ -170,14 +170,29 @@ HTML_CONTENT = """
170
  font-size: 0.8rem;
171
  color: #aaa;
172
  }
 
 
 
 
 
 
 
 
 
 
 
 
173
  </style>
174
  </head>
175
  <body>
176
  <div class="container">
177
  <h1>Radd PRO Uploader</h1>
178
  <form id="uploadForm">
179
- <input type="file" name="files" id="files" class="file-input" accept=".zip,.mp4,.txt,.mp3,image/*,.pdf" required multiple>
180
- <label for="files" class="btn">Choose Files</label>
 
 
 
181
  <div class="file-name" id="fileName"></div>
182
  <button type="button" id="uploadBtn" class="btn" style="display: none; margin-top: 1rem;">Upload Files</button>
183
  <div class="progress-container" id="progressContainer"></div>
@@ -185,7 +200,7 @@ HTML_CONTENT = """
185
  </form>
186
  <div class="result-container" id="resultContainer"></div>
187
  <div class="file-types">
188
- Allowed file types: .zip, .mp4, .txt,.mp3, all image types, .pdf
189
  </div>
190
  </div>
191
 
@@ -196,14 +211,9 @@ HTML_CONTENT = """
196
  const progressContainer = document.getElementById('progressContainer');
197
  const loadingSpinner = document.getElementById('loadingSpinner');
198
  const resultContainer = document.getElementById('resultContainer');
 
199
 
200
- fileInput.addEventListener('change', (e) => {
201
- if (e.target.files.length > 0) {
202
- const fileNames = Array.from(e.target.files).map(file => file.name).join(', ');
203
- fileName.textContent = fileNames;
204
- uploadBtn.style.display = 'inline-block';
205
- }
206
- });
207
 
208
  uploadBtn.addEventListener('click', () => {
209
  if (fileInput.files.length > 0) {
@@ -211,6 +221,45 @@ HTML_CONTENT = """
211
  }
212
  });
213
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
214
  function uploadFiles(files) {
215
  progressContainer.innerHTML = '';
216
  progressContainer.style.display = 'block';
 
170
  font-size: 0.8rem;
171
  color: #aaa;
172
  }
173
+ .drop-zone {
174
+ border: 2px dashed #aaa;
175
+ border-radius: 10px;
176
+ padding: 20px;
177
+ text-align: center;
178
+ cursor: pointer;
179
+ transition: all 0.3s ease;
180
+ }
181
+ .drop-zone:hover, .drop-zone.drag-over {
182
+ border-color: #ffffff;
183
+ background-color: rgba(255, 255, 255, 0.1);
184
+ }
185
  </style>
186
  </head>
187
  <body>
188
  <div class="container">
189
  <h1>Radd PRO Uploader</h1>
190
  <form id="uploadForm">
191
+ <div id="dropZone" class="drop-zone">
192
+ <input type="file" name="files" id="files" class="file-input" accept=".zip,.mp4,.txt,.mp3,image/*,.pdf" required multiple>
193
+ <label for="files" class="btn">Choose Files</label>
194
+ <p>or drag and drop files here</p>
195
+ </div>
196
  <div class="file-name" id="fileName"></div>
197
  <button type="button" id="uploadBtn" class="btn" style="display: none; margin-top: 1rem;">Upload Files</button>
198
  <div class="progress-container" id="progressContainer"></div>
 
200
  </form>
201
  <div class="result-container" id="resultContainer"></div>
202
  <div class="file-types">
203
+ Allowed file types: .zip, .mp4, .txt, .mp3, all image types, .pdf
204
  </div>
205
  </div>
206
 
 
211
  const progressContainer = document.getElementById('progressContainer');
212
  const loadingSpinner = document.getElementById('loadingSpinner');
213
  const resultContainer = document.getElementById('resultContainer');
214
+ const dropZone = document.getElementById('dropZone');
215
 
216
+ fileInput.addEventListener('change', handleFiles);
 
 
 
 
 
 
217
 
218
  uploadBtn.addEventListener('click', () => {
219
  if (fileInput.files.length > 0) {
 
221
  }
222
  });
223
 
224
+ // Drag and drop functionality
225
+ dropZone.addEventListener('dragover', (e) => {
226
+ e.preventDefault();
227
+ dropZone.classList.add('drag-over');
228
+ });
229
+
230
+ dropZone.addEventListener('dragleave', () => {
231
+ dropZone.classList.remove('drag-over');
232
+ });
233
+
234
+ dropZone.addEventListener('drop', (e) => {
235
+ e.preventDefault();
236
+ dropZone.classList.remove('drag-over');
237
+ handleFiles({ target: { files: e.dataTransfer.files } });
238
+ });
239
+
240
+ // Paste functionality
241
+ document.addEventListener('paste', (e) => {
242
+ const items = e.clipboardData.items;
243
+ const files = [];
244
+ for (let i = 0; i < items.length; i++) {
245
+ if (items[i].kind === 'file') {
246
+ const file = items[i].getAsFile();
247
+ files.push(file);
248
+ }
249
+ }
250
+ if (files.length > 0) {
251
+ handleFiles({ target: { files: files } });
252
+ }
253
+ });
254
+
255
+ function handleFiles(e) {
256
+ if (e.target.files.length > 0) {
257
+ const fileNames = Array.from(e.target.files).map(file => file.name).join(', ');
258
+ fileName.textContent = fileNames;
259
+ uploadBtn.style.display = 'inline-block';
260
+ }
261
+ }
262
+
263
  function uploadFiles(files) {
264
  progressContainer.innerHTML = '';
265
  progressContainer.style.display = 'block';