updated the upload functionality to handle large files and added a new image file
This commit is contained in:
43
app/app.py
43
app/app.py
@@ -69,8 +69,12 @@ db_path = os.path.join(instance_dir, 'dashboard.db')
|
||||
app.config['SQLALCHEMY_DATABASE_URI'] = f'sqlite:///{db_path}'
|
||||
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
|
||||
|
||||
# Set maximum content length to 1GB
|
||||
app.config['MAX_CONTENT_LENGTH'] = 2048 * 2048 * 2048 # 2GB, adjust as needed
|
||||
# Set maximum content length to 2GB
|
||||
app.config['MAX_CONTENT_LENGTH'] = 2048 * 1024 * 1024 # 2GB, adjust as needed
|
||||
|
||||
# Set longer timeouts for file processing
|
||||
app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 300 # 5 minutes for static files
|
||||
app.config['PERMANENT_SESSION_LIFETIME'] = 1800 # 30 minutes for sessions
|
||||
|
||||
# Ensure the instance folder exists
|
||||
os.makedirs(app.instance_path, exist_ok=True)
|
||||
@@ -95,6 +99,22 @@ login_manager.login_view = 'login'
|
||||
|
||||
migrate = Migrate(app, db)
|
||||
|
||||
# Add error handlers for better user experience
|
||||
@app.errorhandler(413)
|
||||
def request_entity_too_large(error):
|
||||
flash('File too large. Please upload files smaller than 2GB.', 'danger')
|
||||
return redirect(url_for('dashboard'))
|
||||
|
||||
@app.errorhandler(408)
|
||||
def request_timeout(error):
|
||||
flash('Request timed out. Please try uploading smaller files or try again later.', 'danger')
|
||||
return redirect(url_for('dashboard'))
|
||||
|
||||
@app.errorhandler(500)
|
||||
def internal_server_error(error):
|
||||
flash('An internal server error occurred. Please try again or contact support.', 'danger')
|
||||
return redirect(url_for('dashboard'))
|
||||
|
||||
@login_manager.user_loader
|
||||
def load_user(user_id):
|
||||
return db.session.get(User, int(user_id))
|
||||
@@ -213,8 +233,23 @@ def upload_content():
|
||||
flash('Please select a target type and target ID.', 'danger')
|
||||
return redirect(url_for('upload_content'))
|
||||
|
||||
# Process uploaded files and get results
|
||||
results = process_uploaded_files(app, files, media_type, duration, target_type, target_id)
|
||||
try:
|
||||
# Process uploaded files and get results
|
||||
results = process_uploaded_files(app, files, media_type, duration, target_type, target_id)
|
||||
|
||||
# Check for any failed uploads
|
||||
failed_files = [r for r in results if not r.get('success', True)]
|
||||
if failed_files:
|
||||
for failed in failed_files:
|
||||
flash(f"Error uploading {failed.get('filename', 'unknown file')}: {failed.get('message', 'Unknown error')}", 'warning')
|
||||
else:
|
||||
flash('All files uploaded and processed successfully!', 'success')
|
||||
|
||||
except Exception as e:
|
||||
print(f"Error in upload_content: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
flash(f'Upload failed: {str(e)}', 'danger')
|
||||
|
||||
return redirect(return_url)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user