Cybrkyd's Git Repositories

flask-share - commit: cd4d47f

commit cd4d47f26e7607bd47b63112388dc5c496c087c4db6e766b2bff623b80ad7a0c
author cybrkyd <noreply@cybrkyd.com> 2026-02-04 21:15:09 +0000
committer cybrkyd <noreply@cybrkyd.com> 2026-02-04 21:15:09 +0000

Commit Message

Layout and some styling for better phone screen-size views

📊 Diffstat

share.py 89
1 files changed, 57 insertions(+), 32 deletions(-)

Diff

diff --git a/share.py b/share.py
index 350df66..cb18d79 100644
--- a/share.py
+++ b/share.py
@@ -1,20 +1,58 @@
- from flask import Flask, request, render_template, redirect, url_for
+ from flask import Flask, request, send_from_directory
import os
app = Flask(__name__)
UPLOAD_FOLDER = '/path/to/upload/folder'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
+ def get_base_html(title, content):
+ return f'''
+ <!doctype html>
+ <html>
+ <head>
+ <title>{title}</title>
+ <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, viewport-fit=cover">
+ <style>
+ * {{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent;}}
+ html, body {{width:100%;height:100%;overflow-x:hidden;background-color:#f5f5f5;font-family:sans-serif;}}
+ body {{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;padding:20px;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);}}
+ h1 {{text-align:center;margin-bottom:30px;font-size:33px;color:#333;width:100%;padding:0 10px;}}
+ .container {{width:100%;max-width:400px;display:flex;flex-direction:column;align-items:center;gap:25px;}}
+ @media (max-width:480px) {{
+ body {{padding:15px;}}
+ h1 {{font-size:22px;margin-bottom:25px;}}
+ input[type="file"], input[type="submit"], .button {{padding:14px;}}
+ .file-list {{padding:15px;}}
+ }}
+ @media (max-width:360px) {{h1 {{font-size:20px;}}
+ input[type="file"], input[type="submit"], .button {{padding:12px;font-size:15px;}}
+ .navigation {{flex-direction:column;gap:10px;}}
+ }}
+ </style>
+ </head>
+ <body>
+ <h1>{title}</h1>
+ <div class="container">
+ {content}
+ </div>
+ </body>
+ </html>
+ '''
+
@app.route('/', methods=['GET', 'POST'])
def upload_files():
if request.method == 'POST':
if 'files' not in request.files:
- return 'No file part'
+ return get_base_html('Error',
+ '<div class="message error">No file part</div>'
+ '<a href="/" class="button">Try Again</a>')
files = request.files.getlist('files')
if not files or files[0].filename == '':
- return 'No selected files'
+ return get_base_html('Error',
+ '<div class="message error">No selected files</div>'
+ '<a href="/" class="button">Try Again</a>')
uploaded_files = []
for file in files:
@@ -23,37 +61,24 @@ def upload_files():
file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))
uploaded_files.append(filename)
- return f'Files uploaded successfully: {", ".join(uploaded_files)}'
+ files_list = ''.join([f'<div class="file-item"><span class="file-name">{f}</span></div>' for f in uploaded_files])
+ return get_base_html('Upload Successful',
+ f'<div class="message">Files uploaded successfully!</div>'
+ f'<div class="file-list">{files_list}</div>'
+ '<div class="navigation">'
+ '<a href="/" class="nav-button upload">Upload More</a>'
+ '</div>')
- return '''
- <!doctype html>
- <html>
- <head>
- <title>Multiple File Upload</title>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <style>
- body {font-size:21px}
- .container{width:450px;margin:0 auto;text-align:center}
- form{display:inline-block;max-width:400px}
- input[type="file"] {font-size:21px;cursor:pointer}
- input[type="submit"] {margin-top:30px;padding:5px 30px;font-size:21px;cursor:pointer;color:red}
- </style>
- </head>
- <body>
- <div class="container">
- <h1>Upload Files</h1>
- <form method=post enctype=multipart/form-data>
- <input type=file name=files multiple><br>
- <input type=submit value=Upload>
- </form>
- </div>
- </body>
- </html>
- '''
+ return get_base_html('Upload Files',
+ '<form method=post enctype=multipart/form-data>'
+ '<input type=file name=files multiple>'
+ '<input type=submit value=Upload>'
+ '</form>')
+
+ @app.route('/download/<filename>')
+ def download_file(filename):
+ return send_from_directory(app.config['UPLOAD_FOLDER'], filename, as_attachment=True)
if __name__ == '__main__':
- # Ensure upload directory exists
os.makedirs(UPLOAD_FOLDER, exist_ok=True)
app.run(host='0.0.0.0', port=5000)
-