Files
SkyArtShop/docs/MEDIA_LIBRARY_FIX.md
Local Server 017c6376fc updateweb
2025-12-24 00:13:23 -06:00

5.4 KiB

Media Library Upload & Folder Creation Fix

Date: December 19, 2025

Issues Fixed

1. File Upload Not Working

Problem: Users couldn't upload images through the media library interface.

Root Cause:

  • Lack of proper error handling and user feedback
  • No console logging for debugging upload failures
  • Missing authentication redirect on session expiry

Solution:

  • Added comprehensive error handling with console logging
  • Added success/failure alerts to inform users
  • Improved progress bar with percentage display
  • Added authentication checks and redirects
  • Enhanced file selection handling with event propagation control

2. New Folder Button Not Working

Problem: Creating new folders didn't provide feedback or proper error handling.

Root Cause:

  • Missing success/failure notifications
  • No console logging for debugging
  • Modal not properly closing after folder creation

Solution:

  • Added success alert when folder is created
  • Added comprehensive error logging
  • Fixed modal closing and input cleanup
  • Added authentication checks

Files Modified

/website/admin/media-library.html

  • Enhanced loadFolders() with error handling and auth redirect
  • Enhanced loadFiles() with error handling and auth redirect
  • Fixed showUploadZone() toggle logic with logging
  • Improved handleFileSelect() with event handling
  • Improved handleDrop() with event handling
  • Completely rewrote uploadFiles() with:
    • Comprehensive console logging at each step
    • Success/error alerts with detailed messages
    • Progress tracking with percentage display
    • Better error handling for network issues
    • File count and size logging
  • Enhanced createFolder() with:
    • Success/error alerts
    • Console logging
    • Proper modal cleanup
    • Better error messages
  • Added logging to init() function

Technical Details

Upload Flow

  1. User clicks "Upload Files" button → showUploadZone() displays drop zone
  2. User selects files or drags & drops → handleFileSelect() or handleDrop() triggered
  3. Files sent via uploadFiles() using XMLHttpRequest with FormData
  4. Progress bar shows upload percentage
  5. On success: Alert shown, zone hidden, files reloaded
  6. On error: Error logged and alert displayed

Folder Creation Flow

  1. User clicks "New Folder" button → showCreateFolderModal() opens modal
  2. User enters folder name → createFolder() validates input
  3. POST request to /api/admin/folders with name and parent_id
  4. On success: Alert shown, modal closed, folders/files reloaded
  5. On error: Error logged and alert displayed

API Endpoints Used

  • GET /api/admin/folders - Load all folders
  • GET /api/admin/uploads?folder_id={id} - Load files in folder
  • POST /api/admin/upload - Upload files (multipart/form-data)
  • POST /api/admin/folders - Create new folder

Database Tables

  • media_folders - Stores folder structure
    • id, name, parent_id, path, created_by, created_at, updated_at
  • uploads - Stores uploaded files
    • id, filename, original_name, file_path, file_size, mime_type, uploaded_by, folder_id, created_at

Testing Instructions

Test File Upload

  1. Navigate to http://localhost:5000/admin/media-library.html
  2. Log in if not authenticated
  3. Click "Upload Files" button
  4. Select one or more image files (JPG, PNG, GIF, WebP)
  5. Watch progress bar
  6. Verify success alert appears
  7. Verify files appear in the grid
  8. Check console (F12) for detailed logs

Test Folder Creation

  1. Navigate to media library
  2. Click "New Folder" button
  3. Enter a folder name
  4. Click "Create Folder"
  5. Verify success alert appears
  6. Verify folder appears in the grid
  7. Double-click folder to navigate into it
  8. Try uploading files into the folder

Test Drag & Drop

  1. Open media library
  2. Click "Upload Files" to show drop zone
  3. Drag image files from your file manager
  4. Drop them onto the upload zone
  5. Verify upload proceeds normally

Console Logging

The following logs will appear in browser console:

Initialization:

Initializing media library...
Loaded folders: 0
Loaded files: 0
Media library initialized

Upload:

Upload zone opened
Files selected: 3
Starting upload of 3 files
Adding file: image1.jpg image/jpeg 245678
Adding file: image2.png image/png 189234
Adding file: image3.jpg image/jpeg 356789
Uploading to folder: null
Sending upload request...
Upload progress: 25%
Upload progress: 50%
Upload progress: 75%
Upload progress: 100%
Upload complete, status: 200
Upload response: {success: true, files: Array(3)}

Folder Creation:

Creating folder: MyFolder in parent: null
Create folder response: {success: true, folder: {...}}

Permissions Verified

  • Upload directory exists: /website/uploads/
  • Permissions: 755 (rwxr-xr-x)
  • Owner: pts:pts
  • Backend has write access

Backend Status

  • Server running via PM2 on port 5000
  • All routes properly mounted at /api/admin/*
  • Authentication middleware working
  • Database connections healthy
  • Rate limiting active

Known Limitations

  • Maximum file size: 5MB per file
  • Maximum files per upload: 10 files
  • Allowed file types: JPG, JPEG, PNG, GIF, WebP
  • Folder names sanitized (special characters removed)
  • Unique filenames generated with timestamp

Next Steps

  1. Test with various file types and sizes
  2. Test folder navigation and nested folders
  3. Test file deletion
  4. Test moving files between folders
  5. Consider adding video support if needed
  6. Consider adding file preview modal