5.4 KiB
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
- User clicks "Upload Files" button →
showUploadZone()displays drop zone - User selects files or drags & drops →
handleFileSelect()orhandleDrop()triggered - Files sent via
uploadFiles()using XMLHttpRequest with FormData - Progress bar shows upload percentage
- On success: Alert shown, zone hidden, files reloaded
- On error: Error logged and alert displayed
Folder Creation Flow
- User clicks "New Folder" button →
showCreateFolderModal()opens modal - User enters folder name →
createFolder()validates input - POST request to
/api/admin/folderswith name and parent_id - On success: Alert shown, modal closed, folders/files reloaded
- On error: Error logged and alert displayed
API Endpoints Used
GET /api/admin/folders- Load all foldersGET /api/admin/uploads?folder_id={id}- Load files in folderPOST /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
- Navigate to http://localhost:5000/admin/media-library.html
- Log in if not authenticated
- Click "Upload Files" button
- Select one or more image files (JPG, PNG, GIF, WebP)
- Watch progress bar
- Verify success alert appears
- Verify files appear in the grid
- Check console (F12) for detailed logs
Test Folder Creation
- Navigate to media library
- Click "New Folder" button
- Enter a folder name
- Click "Create Folder"
- Verify success alert appears
- Verify folder appears in the grid
- Double-click folder to navigate into it
- Try uploading files into the folder
Test Drag & Drop
- Open media library
- Click "Upload Files" to show drop zone
- Drag image files from your file manager
- Drop them onto the upload zone
- 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
- Test with various file types and sizes
- Test folder navigation and nested folders
- Test file deletion
- Test moving files between folders
- Consider adding video support if needed
- Consider adding file preview modal